# Makecode 教程

## BBC Miciro:bt和Makecode

### 第1小节 Micro:bit主板的介绍

Micro:bit主板是英国广播公司设计的，旨在帮助7年级（11-12岁）及以上的孩子更好地学习编程。Micro:bit主板拥有丰富的板资源，包括一个5\*5 LED点阵、2个可编程按钮、指南针、Micro USB端口、蓝牙模块等。它只有信用卡一半大小(4cm×5cm)，但功能非常强大。它可以用于编写电子游戏，声光互动，机器人控制，科学实验，可穿戴装置开发等，可以实现任何酷炫的小发明，无论是机器人还是乐器，没有做不到只有想不到。

新款的Micro:bit V2.2主板上有一个可触摸感应的Logo和MEMS麦克风。背面还添加了一个蜂鸣器，这样就可以在没有外部设备的情况下播放各种声音。底部的金手指加上齿轮设计，方便用户更好地固定鳄鱼夹。此外，Micro:bit V2.2主板还支持休眠模式，用户可以长按Micro:bit V2.2主板后面的复位&电源按钮，使其进入睡眠模式，降低电池功耗。最重要的特点是Micro:bit V2.2主板的CPU性能比V1.5版本好得多，外加更多的RAM。所以Micro:bit V2.2允许用户扩展更多的功能，创造更多的创意作品。

（2）Micro:bit主板硬件分布图介绍：

![](media/647dba1f239c644119245119466ee56a.png)

Micro:bit V2.2主板

有关更多内容，请参阅：[<u>https://tech.microbit.org/hardware/</u>](https://tech.microbit.org/hardware/)

<https://microbit.org/new-microbit/>

[<u>https://www.microbit.org/get-started/user-guide/overview/</u>](https://www.microbit.org/get-started/user-guide/overview/)

[<u>https://microbit.org/get-started/user-guide/features-in-depth/</u>](https://microbit.org/get-started/user-guide/features-in-depth/)

（3）Micro:bit引脚配置介绍，如下图所示：

![](media/c166fa1960731390fa28afa658c9acaa.png)

Micro:bit引出的引脚中，其引脚功能分类如下表所示：

|GPIO|P0，P1，P2，P3，P4，P5，P6，P7，P8，P9，P10，P11，P12，P13，P14，P15，P16，P19，P20|
|-|-|
|ADC/DAC|P0，P1，P2，P3，P4，P10|
|IIC|P19（SCL），P20（SDA）|
|SPI|P13（SCK），P14（MISO），P15（MOSI）|
|PWM（常用）|P0，P1，P2，P3，P4，P10|
|PWM（不常用）|P5、P6、P7、P8、P9、P11、P12、P13、P14、P15、P16、P19、P20|
已占用|P3(LED Col3)，P4(LED Col1)，P5(Button A)，P6(LED Col4)，P7(LED Col2)，P10(LED Col5)，P11(Button B)|


详细信息请参考官方网站：[<u>https://tech.microbit.org/hardware/edgeconnector/</u>](https://tech.microbit.org/hardware/edgeconnector/)

https://microbit.org/guide/hardware/pins/

（4）新款Micro:bit V2.2主板使用注意事项：

- a. Micro:bit V2.2主板上有很多精密的电子元件，建议戴上硅胶保护套进行使用，防止短路。

- b. Micro:bit   V2.2主板的IO口驱动能力很弱，IO口电流不足300mA，请勿接大电流器件（例如大舵机MG995、直流电机），否则会烧坏Micro:bit   V2主板，使用前必须完全了解清楚你所使用的器件电流情况，一般建议配搭Micro:bit扩展板进行使用。

- c. 供电建议从Micro:bit   V2.2主板的USB口进行供电，或者Micro:bit   V2.2主板上的3V电池座接口。Micro:bit   V2.2主板本身IO口是3V电平，所以是不支持5V传感器的，如需支持5V传感器需要使用 Micro:bit扩展板。

- d. 使用与Micro:bit   V2.2主板LED点阵的共用引脚（如P3、P4、P6、P7、P10），记得在代码中把LED点阵禁用掉，否则会有LED点阵显示杂乱和可能让所接传感器数据出错的现象。

- e.   3V电池座接口上不能使用超过3.3V电池，否则很容易会把Micro:bit   V2.2主板烧坏。

- f. 禁止放在金属制品上使用，以免发生短路。

总结：Micro:bit V2.2主板就像是一台微型计算机，它使编程变得有形，并促进数字创造力。关于编程环境，BBC提供了一个在线编程网站：<https://microbit.org/code/>，该网站有一个易于使用的图形化程序MakeCode。

### 第2小节 Micro:bit驱动安装说明：

如果你已经安装过micro:bit
驱动，就不需要再次安装micro:bit驱动。假如你是首次使用micro:bit主板，则你的电脑需要安装micro:bit驱动，我们提供的micro:bit驱动文件

![](media/d168460fea2398b6685dd3158d06a48a.png)

和micro:bit驱动安装手册都在文件夹“安装Micro:bit
驱动”里面，你可以进入相关文件夹中根据说明书进行安装。

![](media/9af4009ffe68b1ea7aeb715c4e844d32.png)

### 第3小节 快速开始

以下的步骤说明基于Windows操作系统，如果你使用的是其他操作系统，可以将其作为参考。

（1）代码与编程

本节介绍如何为micro：bit编写程序以及如何将其下载到micro：bit。
micro：bit官方网站上有非常详细的教程，
您可以参考：[<u>Https://microbit.org/guide/quick/</u>](https://microbit.org/guide/quick/)

Step 1: 连接micro：bit

通过Micro USB线将micro：bit连接到电脑，

![](media/3da2f87cd1d6fbc011ca98bf6612c085.png)

![](media/c9cc0ed9d9948de3c11137504e0110f8.png)

micro:bit主板背后的红色LED会显示，表明micro:bit主板有电了。

Micro:bit
将在您的电脑上显示为一个名为'MICROBIT'的驱动器。但请注意，它不是普通的USB磁盘！如下图：

![](media/7ee77ecd3f37f39fcf58241d137cdd6a.png)

Step 2: 编写程序

在浏览器中访问链接：<https://makecode.microbit.org/>，然后单击“新建项目”，出现“创建项目”对话框，在对话框中输入“heartbeat”，单击“创建”并开始编程。

如果你的电脑具有Windows 10操作系统，则还可以使用Windows 10 App进行编程，这与在浏览器上进行编程完全相同:
[https://www.microsoft.com/zh-cn/p/makecode-for-micro-bit/9pjc7sv48lcx?ocid=badgep&rtc=1&activetab=pivot:overviewtab](https://www.microsoft.com/zh-cn/p/makecode-for-micro-bit/9pjc7sv48lcx?ocid=badgep&rtc=1#activetab=pivot:overviewtab)

（以下是以Google Chrome为例，其他浏览器类似）

![](media/e3a458900b18680e376c956b9ebdf76a.png)

![](media/63936fa984c4a88187548fb6401e98a1.png)

如果你的编程界面是英文界面可以切换到中文界面

操作：如下图点击右上角1（设置）图标，再点击2 Language,然后选择简体中文，这样就切换到中问界面了

![](media/b642780d970fd8b8fd0d60bb73dbcb64.png) 

![](media/122bb510e3a3515916407fe327bb59fe.png)

![](media/f7343da6b6e34883694e9ef0ff84e8df.png)

①点击基础栏拖出两 个
显示图标方块放入无线循环中，点击第二个方块下拉按钮换成

![](media/6f4ee722b59db324b57fba6c5d72e5d7.png)

图标。

![](media/737631cc623cab12a6fa6fe3ad37b21f.png)

图二

②点击“ JS JavaScript”，你可以看到对应的JavaScript语言代码程序。

![](media/095c08b2af809a04dc214f496df5ee51.png)

③你还可以点击“JavaScript
”，再点击下拉按钮选择“Python”，你还可以看到对应的Python语言代码程序，如下图：

![](media/9abe862b41672bf3f77e41335fdd1925.png)

Step 3: 下载代码

如果使用Windows 10 App编写程序，则只需单击“下载”按钮，该代码程序将直接下载到micro:bit主板，而无需任何其他操作。

如果使用浏览器编写程序，请按照以下步骤操作：

单击编辑器中的“下载”按钮。
这将下载一个“hex”文件，该文件是micro：bit可以读取的紧凑程序格式。
十六进制文件下载后，将其复制到你的micro：bit，就像将文件复制到USB驱动器一样。
在Windows上，你还可以右键单击并选择“发送到→MICROBIT（E）”将“hex”文件拷贝到micro：bit。

![](media/bcd47a45f5480ea9d7333c6e44fd4c06.png)

也可以将“hex”文件直接拖入MICROBIT（E）磁盘中。

![](media/62bc1989db1c9e00e58bf35ea0fa3751.png)

![](media/c77438d43694c07ecf775694ebf1547f.png)

将下载好的“hex”文件拷贝到micro：bit过程中，micro:bit主板背面的电源信号灯会闪烁，当拷贝完成后电源信号灯停止闪烁，保持长亮。

Step 4: 运行程序

代码程序上传micro: bit 主板后，通过micro USB线或外接电源供电给micro: bit 主板供电，micro: bit主板上5 x 5 LED点阵显示心型的图案。

![](media/26de020f8ca6dbb6e9afd66a1e394733.png)

![](media/d61a26d2f2367f0378974832f679efe1.png)

micro USB线供电 外接电源供电（3V）

每次编程时，MICROBIT驱动器都会自动弹出并返回，但是你的hex文件将会消失。
micro:bit 只能接收hex文件，不会存储任何其他文件！

Step5：掌握  
本小节向你展示了如何开始使用micro:bit，但是除了MakeCode之外，您还可以使用Python和基于文本的JavaScript来编写micro:bit。转到：[<u>https://microbit.org/code/</u>](https://microbit.org/code/)查看不同的语言，或查看：<https://microbit.org/projects/>，了解你可能想要尝试的一些内容。

（2）Makecode

在Google Chrome访问链接：<https://makecode.microbit.org/>，打开makecode在线版本

![](media/70493560ba182badfc625739b16ddd67.png)

点击 “New Project”,出现“创建项目”对话框，在对话框中输入“heartbeat”，单击“创建”进入Makecode
编译器，Makecode 编译器如下:

![](media/66f5605c5b6142fff0c41476c45ca47d.png) 

在代码编辑区中，有两个固定的指令方块“当开机时”和“无限循环”。

上电或复位后，“当开机时”指令方块中的代码将仅执行一次；并且“无限循环”指令方块中的代码将循环执行。

（3）快速下载

如前所述，如果使用makecode的Windows 10 App，则可以通过单击“下载”按钮将代码快速下载到micro:bit主板。

使用makecode的浏览器版本下载编写好的代码程序可能需要更多步骤。
但是，如果您将Google Chrome 用于Android，ChromeOS，Linux，macOS和Windows 10系统，则可以实现快速下载功能。

在这里，我们使用Chrome的webUSB功能，该功能允许网页访问您的micro USB硬件设备。
我们将按照以下步骤完成micro：bit设备与网页的连接和配对。

配对装置

用micro USB线连接电脑和micro：bit。

单击“下载”后面的“...”，然后单击“设备配对”。

![](media/6affa5eae08b2751d7b553007a100b39.png)

然后继续单击“设备配对”按钮。

![](media/bd2c1d436670560fee08a6361af31807.png)![](media/c44b0f16f4072234451d0da767af8258.png)

在弹出窗口中选中“设备”，然后单击“连接”按钮。
如果弹出窗口中没有设备，请参考以下内容：[<u>https://makecode.microbit.org/device/usb/webusb/troubleshoot</u>](https://makecode.microbit.org/device/usb/webusb/troubleshoot)

当然，如果你不想点击链接进入相关页面中查看，你也可以本教程的”相关资料”文件夹中直接阅读“使用WebUSB对下载进行故障排除”。

如果你的micro:bit出现问题是需要更新micro bit的固件，在本教程的文件夹“如何更新micro bit的固件”中的文件“如何更新micro bit的固件.pdf”介绍了如何更新micro：bit的固件，其内容来自：[<u>https://microbit.org/guide/firmware/</u>](https://microbit.org/guide/firmware/)

![](media/9438a7999edaa050ceb2a509bfc90c19.png)

连接成功后，单击“下载”按钮，程序将直接下载到Micro:
bit，同时还会出现“下载成功!”提示语。

![](media/2adc27f5a04811dadb705e30c8773e30.png)

注意：有的系统不支持快速下载方式，比如在电脑的设备管理器中可以看到在线驱动CMSIS-DAP安装不成功就不支持快速下载；需要选择其它程序上传方式

![](media/d5829cf912e1a06716437bba17205927.png)

（4）导入代码{ XE "7.6.导入代码" }

我们为每个项目提供十六进制文件（项目文件）。
十六进制文件包含项目的所有内容，可以直接导入，您也可以手动完成项目代码。如果选择通过拖动代码块来完成代码，则可能需要添加必要的扩展库。

对于简单项目，建议通过拖动代码块来完成项目。

对于复杂的项目，建议通过导入十六进制代码文件来完成项目.

接下来，我们以“
Heatbeat”项目为例，介绍如何加载代码。

打开Web版本的makecode。

![](media/3e48d1a4a204e86c66fb88b8b00ce15b.png)

在弹出的对话框中，单击“导入文件”。

![](media/b77de05362f37f33223aeab76b0cef8b.png)

![](media/c8d683efef0e847f00d795fe636cf262.png)

选择文件“ ../Makecode
教程\2.学习前的准备\程序-闪烁的心\microbit-闪烁的心.hex”。
然后点击“继续！”

![](media/358f8c3854d45beb8ef3bb520a9cbbb2.png)

![](media/0d4c006244d7da3bbb2985296c4e61a5.png)

除了上述将提供的项目代码程序文件直接导入到Makecode
编译器中的方法之外，也可以将提供的项目代码程序文件直接拖入到Makecode
编译器中，如下图所示：

![](media/390be1a4fdae505d0f0486736d65cb0e.png)

几秒钟后，项目成功加载。

![](media/f8871851363dfac42aa940ab56eb41c7.png)

注意：如果你的电脑系统是Windows7/8而不是Windows 10，则在Google Chrome中是无法进行设备配对，从而读取不了一些传感器/模块的数字信号或模拟信号，可是又需要读取相应的传感器/模块的数字信号或模拟信号，那怎么办呢？这里就可以使用CoolTerm软件来读取串口的，下面是CoolTerm安装方法。

（5）CoolTerm安装方法：

这里需要安装CoolTerm程序，CoolTerm程序是用来在下面的一些实验中读取串口的，这里我们提供了CoolTerm程序文件下载链接：<https://freeware.the-meiers.org/>

1.  现在，让我们来安装CoolTerm程序，这里我们是以PC     Window系统为例，选择下载安装CoolTerm Win，下载后解压并打开。（PC     Mac系统和PC Linux系统也类似）

![](media/97f831d38df9ee01dcfedac244bfe281.png)

![](media/e77548d01727e523e9e8c900d2fa962d.png)

（2）左键双击程序文件

![](media/5f29eed25fc16602cfc0716f047c2da1.png)

。（注意：必须保证micro:bit驱动已安装和micro:bit已用micro USB数据线连接到电脑上）

![](media/74fd81c83f0c0a26b4e299b93ce4ede4.png)

工具栏上每个按钮的功能如下所示：

![](media/70bebd79d7cd20336ae394c916500a28.png)|![](media/2b728375ed2b8cd288c884e553418001.png)|新建文件|-|-|![](media/5f972f2eac5050ca0107416b2be067c2.png)|打开文件|![](media/be6f8b560e0afc447f9c32b4474f633f.png)|保存文件|![](media/52257d028694a313fc4eea4d9c2469d7.png)|打开串口|![](media/6ad366842b18084553a142ab82a613cf.png)|关闭|![](media/8fa3ac342549d33b6c9aa5a9e4688bea.png)|清除接收到的数据|![](media/c8d1dd8c3356b4938e143de1022e5842.png)|清除接收到的数据|![](media/36e13c266fd4b9723d9db40fe30cd203.png)|以十六进制格式显示终端数据|![](media/b505c71c3344036730b1d67f0c62a354.png)|显示帮助窗口|
## 实验课程

### Microbit 基础课程

#### 第一课闪烁的心

Microbit
基础课程是使用micro：bit主板自带的传感器模块和LED点阵。

实验说明：

首先先来练习一个不需要其他辅助元件，只需要一块micro：bit主板和一根micro USB数据线的简单实验，让micro：bit显示“闪烁的心”，这是一个让micro：bit主板和PC机通信的实验，这也是一个入门实验，希望可以带领大家进入micro：bit的魔幻世界。

准备：

（1）通过micro USB线连接micro：bit和电脑。

（2）打开Web版本的Makecode。

如果选择通过导入Hex文件来加载项目，请单击“导入”。

如果要一一拖动代码块，请单击“新建项目”。

![](media/8161415af7a3c94aba9e7c4771505375.png)

实验代码：

可以直接加载我们提供的程序，文件位置如下图：

|文件类型|路径|文件名|
|-|-|-|
|Hex|..../Makecode 教程\3.实验课程\Microbit 基础课程\第1课闪烁的心\程序|闪烁的心.hex|

也可以自己通过拖动代码块来编写代码程序，操作步骤如下：

（1）点击“基础”栏，找到并拖出指令方块“显示图标”放入“无线循环”指令方块中，再复制指令方块“显示图标”1次也放入“无线循环”指令方块中并且点击“❤”图案后面的下拉三角形按钮选择“

![](media/04fdfc9060943954e7938bb1a741d626.png)

”图案

![](media/268cb10daa96181ea1b2bdd5d3478c79.png)

完整的代码程序：

![](media/5a8b725e01c929ea402c0d369e6beb6e.png)

....................①“无限循环”指令方块仅运行一次以启动程序。

....................②在“当开机时”指令方块之内，程序循环运行。

....................③LED点阵显示“❤”图案

....................④LED点阵显示“![](media/04fdfc9060943954e7938bb1a741d626.png)”图案

点击micro:
bit在线编程工具的“JSJavaScript”,你可以看到对应的JavaScript语言代码程序：

![](media/17d106a41ae609b228f9c1d4660dade8.png)

实验结果:

按照之前的方式将代码下载到micro：bit，micro USB数据线不要拔下来，利用micro USB数据线上电，micro:bit主板上的LED点阵屏切换显示“❤”图案和“

![](media/04fdfc9060943954e7938bb1a741d626.png)

”图案，循环进行。

如果存在下载问题，请断开micro USB线和Micro：bit，然后重新连接它们并重新打开Makecode，以尝试再次下载。

#### 第二课LED点阵中单个LED显示 

![](media/8c3f540a07aab97e1608ba8770837f7b.png)

实验说明：

micro：bit主板的LED点阵共由25个发光二极管组成，5个一组，分别对应X和Y方向，形成一个5×5的矩阵，且每个发光二极管是放置在行线（X）和列线（Y）的交叉点上，我们可以通过设置坐标点来实现对25个LED中某一个LED的控制。例如，想要LED点阵中第1行第1个LED点亮，可以设置坐标点为（0，0）；第1行第3个LED点亮，可以设置坐标点为（2，0）；第1列第5个LED点亮，可以设置坐标点为（0，4）；第3列第2个LED点亮，可以设置坐标点为（2，1），依此类推。

![](media/a44f7625e2b1d61819bfc1985c321796.png)

准备：

（1）通过micro USB线连接micro：bit和电脑。

（2）打开Web版本的Makecode。

如果选择通过导入Hex文件来加载项目，请单击“导入”。

如果要一一拖动代码块，请单击“新建项目”。

![](media/226913d0639a68b9ff36d9b4767de937.png)

实验代码

可以直接加载我们提供的程序，文件位置如下图：

|文件类型|路径|文件名|
|-|-|-|
|Hex file|../Makecode 教程\3.实验课程\Microbit 基础课程\第2课LED点阵中单个LED显示\程序|LED点阵中单个LED显示.hex|

也可以自己通过拖动代码块来编写代码程序，操作步骤如下：

（1）先点击“Led”栏，再点击“Led”模块下的“更多”，找到并拖出指令方块“led
启用
fasle”放入“当开机时”指令方块中，点击“false”后面的下拉三角形按钮选择“true”。

![](media/30a68088f02c2ce629e2c47284b0b920.png)

（2）点击“Led”模块，找到并拖出指令方块“切换x 0y 0”放入“无限循环”指令方块中，将“x 0”改成“x 1”。

![](media/96c862dd956ec88820e1d6a740c02c7c.png)

点击“基础”栏，找到并拖出指令方块“暂停 (ms)     100”放入代码块

![](media/96c862dd956ec88820e1d6a740c02c7c.png)

中，设置延时500毫秒。

![](media/c36063ad438a4be637ca98b0b6aa8a9d.png)

复制代码串

![](media/c36063ad438a4be637ca98b0b6aa8a9d.png)

1次放入“无限循环”指令方块中。

![](media/b26b50cd31e20535f2d13031de67e19b.png)

点击“Led”模块，找到并拖出指令方块“绘图x 0y     0”放入“无限循环”指令方块中，将“x 0 y 0”改成“x 3 y 4”。

![](media/8ff3a900b4339baed15f0ca54814ae3a.png)

（4）复制指令方块“暂停 (ms)     500”1次“无限循环”指令方块中。

![](media/819ce06f005063132e92e828ecfb4dba.png)

（5）点击“Led”模块，找到并拖出指令方块“取消绘图x     0 y 0”放入“无限循环”指令方块中，将“x 0 y 0”改成“x 3 y     4”，并复制指令方块“暂停 (ms)     500”1次放入“无限循环”指令方块中。

![](media/8152da905725af0e8f5bf4ad5ccd9652.png)

完整的代码程序：

![](media/b738570ca6603597110618ddbc75d786.png)

....................①“当开机时”指令方块仅运行一次以启动程序。

....................②打开LED点阵屏。

....................③在“无限循环”指令方块之内，程序循环运行。

....................④切换处于坐标x 1 y 0的LED亮度。

....................⑤延时时间500毫秒。

....................⑥切换处于坐标x 1 y 0的LED亮度。

....................⑦延时时间500毫秒。

....................⑧点亮处于坐标x3，y4的LED。

....................⑨延时时间500毫秒。

....................⑩熄灭处于坐标x3 y4的LED。

....................⑪延时时间500毫秒。

点击micro:
bit在线编程工具的“JSJavaScript”,你可以看到对应的JavaScript语言代码程序：

![](media/cdbb460770bef54d313bd6ee11761813.png)

实验结果：

按照之前的方式将代码下载到micro：bit，micro USB数据线不要拔下来，利用micro USB数据线上电，我们就可以看到切换坐标点(1,0)的LED的亮灭状态，持续0.5s，再次切换坐标点(1,0)的LED的亮灭状态，持续0.5s；点亮坐标点(3,4)的LED，持续0.5s，熄灭坐标点(3,4)的LED，持续0.5s。循环进行。

#### 第三课 5×5 LED点阵图案显示

![](media/5bbafad58a34792768c8370e8ee8c2cf.png)

实验说明：

点阵在我们生活中很常见，很多都有用到它，比如LED广告显示屏，电梯显示楼层，公交车报站等等。

micro：bit主板的LED点阵共由25个发光二极管组成，上一课我们已经讲过通过设置坐标点来实现对LED点阵的25个LED中的某个LED的控制，这样可以通过设置多个坐标点控制多个LED的亮灭使得LED点阵能够显示图案、数字、字符串。我们也可以在特定代码中通过点击
LED点阵的灰白色小正方形点亮
LED点阵对应的LED来实现LED点阵显示图案、数字、字符串。除了上述方法还可以使用自定义图案使LED点阵显示图案。

准备：

（1）通过micro USB线连接micro：bit和电脑。

（2）打开Web版本的Makecode。

如果选择通过导入Hex文件来加载项目，请单击“导入”。

如果要一一拖动代码块，请单击“新建项目”。

![](media/226913d0639a68b9ff36d9b4767de937.png)

实验程序：

程序1：

可以直接加载我们提供的程序，文件位置如下图：

|文件类型|路径|文件名|
|Hex|Makecode 教程\3.实验课程\Microbit 基础课程\第3课 5 x 5 LED点阵图案显示.docx\程序|5 x 5 LED点阵图案显示-1.hex|

也可以自己通过拖动代码块来编写代码程序，操作步骤如下：

（1）先点击“Led”栏，再点击“Led”栏下的“更多”，找到并拖出指令方块“led
启用
fasle”放入“当开机时”指令方块中，点击“false”后面的下拉三角形按钮选择“true”。

![](media/30a68088f02c2ce629e2c47284b0b920.png)

（2）点击“Led”栏，找到并拖出指令方块“绘图 x 0 y 0”放入“无限循环”指令方块中，复制“绘图 x 0 y 0”指令方块8次并且放入“无限循环”指令方块中，将“x 0”y 0”分别改成“x 2”y 0”、“x 2”y 1”、“x 2”y 2”、“x 2”y 3”、“x 2”y 4”、“x 1”y 3”“x 0”y 2”、“x 3”y 3”、“x 4”y 2”。

![](media/6524556e089162eb33a94e7cb5460286.png)

完整的代码程序：

![](media/2211e578fd172f9c7fb76fbe0f4407f2.png)

....................①“当开机时”指令方块仅运行一次以启动程序。

....................②打开LED点阵屏。

....................③在“无限循环”指令方块之内，程序循环运行。

....................④点亮处于坐标x 2，y 0的LED。

....................⑤点亮处于坐标x 2，y 1的LED。

....................⑥点亮处于坐标x 2，y 2的LED。

....................⑦点亮处于坐标x 2，y 3的LED。

....................⑧点亮处于坐标x 2，y 4的LED。

....................⑨点亮处于坐标x 1，y 3的LED。

....................⑩点亮处于坐标x 0，y 2的LED。

....................⑪点亮处于坐标x 3，y 3的LED。

....................⑫点亮处于坐标x 4，y 2的LED。

点击micro:
bit在线编程工具的“JSJavaScript”,你可以看到对应的JavaScript语言代码程序：

![](media/51c87937aa1d386037ec5921cdab7259.png)

代码2：

根据下表加载代码（如何加载？）如下图：

|文件类型|路径|文件名|
|-|-|-|
|Hex file|Makecode 教程\3.实验课程\Microbit 基础课程\第3课 5 x 5 LED点阵图案显示.docx\程序|5 x 5 LED点阵图案显示-2.hex|

也可以自己通过拖动代码块来编写代码程序，操作步骤如下：

点击“基础”栏，找到并拖出指令方块“显示数字”放入“当开机时”指令方块中，并且复制指令方块“显示数字”4次，将数字0分别改成1、2、3、4、5。

![](media/072fd5ff9b200606aca2f184774d4ff9.png)

从“基础”栏，拖出指令方块“显示LED”放入“当开机时”指令方块中，点击灰蓝色小方框变白色，点亮LED点阵对应的LED，形成“↓”图案。

![](media/38372a730d72dfcc201703d3bcdebe1b.png)

从“基础”栏，拖出指令方块“显示字符串Hello!”放入“当开机时”指令方块中。

![](media/6e8a6572b0f77aec96c1e6ded08c90ab.png)

从“基础”栏，拖出指令方块“显示图标”放入“当开机时”指令方块中。

![](media/fe14b774db3a601a7d1f467e7e5b643f.png)

点击“基础”栏，找到并拖出指令方块“显示箭头北”放入“当开机时”指令方块中，复制指令方块“显示箭头北”3次，点击“北”后面的下拉三角形按钮分别选择“东北”、“东南”、“西南”、“西北”。

![](media/441228dc6a6722d350b7b8438d0da428.png)

先点击“基础”栏，找到并拖出指令方块“清空屏幕”放入“当开机时”指令方块中，点击“基础”栏，找到并拖出指令方块“暂停
(ms) 100”放入“当开机时”指令方块中，设置延时500毫秒。

![](media/8697fca7b6d2ca4f8afe2dd0a458ba08.png)

完整的代码程序：

![](media/8697fca7b6d2ca4f8afe2dd0a458ba08.png)

....................①“当开机时”指令方块仅运行一次以启动程序。

....................②在LED点阵显示数字1。

....................③在LED点阵显示数字2。

....................④在LED点阵显示数字3。

....................⑤在LED点阵显示数字4。

....................⑥在LED点阵显示数字5。

....................⑦在LED点阵点亮对应的LED，显示“↓”图案。

....................⑧在LED点阵滚动显示字符串“Hello!”。

....................⑨在LED点阵点亮对应的LED显示“❤”图案。

....................⑩在LED点阵点亮对应的LED显示“东北”方向箭头图案。

....................⑪在LED点阵点亮对应的LED显示“东南”方向箭头图案。

....................⑫在LED点阵点亮对应的LED显示“西南”方向箭头图案。

....................⑬在LED点阵点亮对应的LED显示“西北”方向箭头图案。

....................⑭清空屏幕。

....................⑮延时500毫秒。

点击micro:
bit在线编程工具的“JSJavaScript”,你可以看到对应的JavaScript语言代码程序：

![](media/2d8ee340097230ecc8b62e176faaaa3e.png)

实验结果：

按照之前的方式将代码1下载到micro：bit，micro USB数据线不要拔下来，利用micro USB数据线上电，我们就可以看到micro：bit主板的5×5 LED点阵显示“向下”图案

![](media/d4e278da768e447ed344d581e671f57a.png)

；

用同样的方法将代码2下载到micro：bit，micro USB数据线不要拔下来，利用micro USB数据线上电，我们就可以看到micro：bit主板的5×5 LED点阵开始显示数字1、2、3、4、5，然后循环显示“向下”图案

![](media/d4e278da768e447ed344d581e671f57a.png)、字符串“Hello!”、“心”图案![](media/66b31365d42274ef94ce9a3fcea1cd6c.png)、“东北”方向图案![](media/39fe4029acb5fb675d875c58e382d148.png)、“东南”方向图案![](media/45fcde65eb80a942d3903e400a346587.png)、“西南”方向图案![](media/9e34fdb19d72918bde242994a3c94c1f.png)和“西北”方向图案![](media/2a45fca9d836ce38674c347c70c81e02.png)

。

#### 第四课 micro:bit的可编程按键

![](media/06be84fb11b1fd07cd0cbb392132b903.png)

实验说明：

![](media/2ff75a1d81bfe0228b83931a0b7cc860.png)按键可以控制电路的通断，把按键接入电路中，不按下按键的时候电路是断开的，一按下按键电路就通啦，但是松开之后就又断了。可是为什么按下才通电呢？这得从按键的内部构造说起。没按下之前，电流从按键的一端过不去另一端，按键的两端就像两座山，中间隔着一条河，我们在这座山过不去另一座山；按下的时候，按键内部的金属片把两边连接起来让电流通过，就像搭了一座桥，把两座山连接起来。

按键内部结构如图：

![](media/d2a204e61c768f18924150db58aee093.png)

，未按下按键之前，1、2就是导通的，3、4也是导通的，但是1、3或1、4或2、3或2、4是断开（不通）的；只有按下按键时，1、3或1、4或2、3或2、4才是导通的。

micro：bit主板有三个按键，反面的是复位按钮，正面的是两个可编程按键，通过对两个可编程按键组合可以有三种组合，作为输入元件。我们结合上节课的LED点阵，一起来学习按键吧。我们做一个按键三连，分别按A、B和AB同时按，对应显示屏分别显示A、B和AB。

准备：

（1）通过micro USB线连接micro：bit和电脑。

（2）打开Web版本的Makecode。

实验程序：

程序1：

按下micro：bit上的按键，让micro：bit上
LED点阵显示字符串。

可以直接加载我们提供的程序，文件位置如下图：

|文件类型|路径|文件名|
|-|-|-|
|Hex|Makecode 教程\3.实验课程\Microbit 基础课程\第4课可编程按键\程序|可编程按键-1.hex|

也可以自己通过拖动程序块来编写程序程序，操作步骤如下：

（1）先删除指令方块“当开机时”和“无限循环”，然后点击“输入”栏，找到并拖出“当按钮A被按下时”指令方块。

（2）点击“基础”栏，找到并拖出指令方块“显示数字”放入“当按钮A被按下时”指令方块中，将“Hello!”改成“A”。

![](media/09fe88931df31dc9215a4dc82bf6ded4.png)

（3）复制程序串

![](media/09fe88931df31dc9215a4dc82bf6ded4.png)

1次，点击“A”后面的下拉三角形按钮选择“B”，并将字符“A”改成“B”。

![](media/36b0b98cd3caa7f9fa33c57598113782.png)

（4）再复制程序串

![](media/09fe88931df31dc9215a4dc82bf6ded4.png)

1次，点击“A”后面的下拉三角形按钮选择“A+B”，并将字符“A”改成“AB”。

![](media/9f11601cb7e7c570c2aa2182d76204c3.png)

完整的程序程序：

....................①按下micro: bit主板上的按键A。

....................②LED点阵显示字符“A”。

....................③按下micro: bit主板上的按键B。

....................④LED点阵显示字符“B”。

....................⑤同时按下micro: bit主板上的按键A和B。

....................⑥LED点阵显示字符“AB”

![](media/6246ee12aecfc385d0600b6cbd47987f.png)

程序2：

按下micro：bit主板上正面按键A，条形图高度值增加5，表现为LED点阵亮的行数增加；按下正面按键B，减少条形图高度，表现为LED点阵亮的行数减少。

可以直接加载我们提供的程序，文件位置如下图：

|文件类型|路径|文件名|
|-|-|-|
|Hex file|Makecode 教程\3.实验课程\Microbit 基础课程\第4课microbit的可编程按键\程序|可编程按键-2.hex|

也可以自己通过拖动程序块来编写程序程序，操作步骤如下：

（1）先点击“Led”栏，再点击“Led”栏下的“更多”，找到并拖出指令方块“LED启用false”放入“当开机时”指令方块中，点击“false”后面的下拉三角形按钮选择“true”。

![](media/5ad6b9ff6d3457d88ab5fef92ed4c2fa.png)

点击“输入”栏，找到并拖出“当按钮A被按下时”指令方块。

点击“变量”栏，找到并拖出“以1为幅度更改item”指令方块放入“当按钮A被按下时”指令方块中。将数字1改成5。

![](media/a99f4f853f49d3215114ef2455d74679.png)

（5）复制程序串

![](media/a99f4f853f49d3215114ef2455d74679.png)

1次，先点击“A”后面的下拉三角形按钮选择“B”，再将数字5改成
-5。

![](media/872ac6693c23f318d42b3a69dcc18797.png)

点击“Led”栏，找到并拖出指令方块“绘制条图形”放入“无限循环”指令方块中，从“变量”栏中拖出变量指令方块“item”放入of后面的0处，再把to后面的0改成25。

![](media/4f4d11d490a9b0fa49402f20ffaf0412.png)

点击“逻辑”栏，找到并拖出指令方块“如果为...then...则”放入“无限循环”指令方块中，又从“逻辑”栏中拖出“=”方块放入“true”方框中，再从“变量”栏中拖出变量指令方块“item”放入“=”左侧，点击“=”后面下拉三角形按钮选择“\>”，将“\>”右侧的数字0改成25；最后从“变量”栏中拖出变量指令方块“将...inem....设为......”放入“如果为...then...则”指令方块中，将数字0改成25。

![](media/d2cf1cde7961ae241c1521d754955e99.png)

（7）复制程序串1次放入

![](media/d2cf1cde7961ae241c1521d754955e99.png)

“无限循环”指令方块中，将“\>”改成“\<”，数字25都改成0。

![](media/5e406f9a3e5c02d3bd3f8b62505c4829.png)

完整的程序程序：

![](media/d1365367ca82758fbffd66038489b4d1.png)

....................①“当开机时”指令方块仅运行一次以启动程序。

....................②打开LED点阵屏。

....................③设置变量“item”的初始值为0。

.

...................④按下micro: bit主板上的按键A。

....................⑤以5为幅度更改变量值。

....................⑥按下micro: bit主板上的按键B。

....................⑦以 -5为幅度更改变量值。

....................⑧在“无限循环”指令方块之内，程序循环运行。

...................⑨点亮LED点阵中LED绘制条形图，最高点亮25个LED。

....................⑩当变量“item”值大于25是正确的，就运行then下的程序。

....................⑪将变量“item”值设置为25。

.....................⑫当变量“item”值小于0是正确的，就运行then下的程序。

....................⑬将变量“item”值设置为0。

实验结果：

按照之前的方式将程序1下载到micro：bit，micro USB数据线不要拔下来，利用micro USB数据线上电，按下micro：bit主板上正面按键A，我们可以看到5×5 LED点阵显示字符“A”；按下micro：bit主板上正面按键B，我们可以看到5×5 LED点阵显示字符“B”，同时按下micro：bit主板上正面按键A和B，我们就可以看到5×5 LED点阵显示字符“AB”。

用同样的方式将程序2下载到micro：bit，micro USB数据线不要拔下来，利用micro USB数据线上电，按下micro：bit主板上正面按键A，条形图高度值增加5，表现为LED点阵亮的行数增加；按下正面按键B，减少条形图高度，表现为LED点阵亮的行数减少。

#### 第五课 micro:bit学习测温度

实验说明：

micro:bit主板实际上并不带温度传感器，而是采用nRF52833芯片内置的温度传感器进行温度检测，所以检测的温度更接近芯片的温度，可能与周围环境温度存在一定的误差。在这一课程中，我们先利用该传感器测试当前环境中的温度，并将测试结果在显示数据(设备)中显示，再通过设置该传感器检测的温度范围来控制LED点阵显示不同的图案。

注意：micro:bit主板的温度传感器在这里：

![](media/206c8ec1c3f11d2de8d0f42fdf5b6b47.png)

准备：

（1）通过micro USB线连接micro：bit和电脑。

（2）打开Web版本的Makecode。

实验程序：

程序1：

Micro:bit检测温度

可以直接加载我们提供的程序，文件位置如下图：

|文件类型|路径|文件名|
|-|-|-|
|Hex|Makecode 教程\3.实验课程\Microbit 基础课程\第5课学习测温度\程序|学习测温-1.hex|

也可以自己通过拖动程序块来编写程序程序，操作步骤如下：

（1）点击“高级”下的“串行”栏，找到并拖出指令方块“串行
重定向到 USB”放入“当开机时”指令方块中。

![](media/1915e53fe6802a7fd3063810500587df.png)

（2）再点击“串行”栏，找到并拖出“串行写入数值
x=0”指令方块放入“无限循环”指令方块中。

![](media/ad54a2c04c0696f478f8fd3de4a68cf7.png)

（3）点击“输入”栏，找到并拖出指令方块“温度(℃)”放入=后面的数字0处，将x改成Temperature。

![](media/b75c0de228d4b910613c633cd469194e.png)

（4）点击“基础”栏，找到并拖出指令方块“暂停 (ms) 100”放入“无限循环”指令方块中，设置延时500毫秒。

![](media/53dcb9f9aa194af0292a6378d14f76e9.png)

完整的程序程序：

![](media/5e21b15aa75763aa5953b373b57f4db4.png)

....................①“当开机时”指令方块仅运行一次以启动程序。

....................②串行 重定向到USB。

..................③在“无限循环”指令方块之内，程序循环运行。

..................④串行写入数值Temperature=温度（℃）。

..................⑤延时时间500毫秒。

按照之前的方式将程序1下载至micro: bit，micro USB数据线不要拔下来，利用micro USB数据线上电，接下来点击显示数据(设备)按钮：

![](media/0d3198e0cb5460c9820bc2f016c0d7c1.png)

将显示温度数据，如下图所示：

![](media/6177222069a9583f2d8314d592fdb916.png)

在以上的测试中，将Micro:bit的nRF52833芯片接触，一段时间后，温度开始慢慢上升，此时室温约为35摄氏度，与水杯外侧接触后，温度上升到37摄氏度，符合预期。

如果你的电脑系统是Windows7/8而不是Windows 10，则在Google Chrome中是不能进行设备配对，从而读取不了相应的数字信号或模拟信号，可是又需要读取相应的传感器/栏的数字信号或模拟信号，那怎么办呢？这里就可以使用CoolTerm软件来读取串口的。

打开CoolTerm，点击Options，选择串行Port，设置COM口和波特率，波特率设置为115200（经过测试，micro:bit的USB串口通讯波特率是115200），点击OK后，最后点击Connect。CoolTerm的串口监视器显示当前环境中的温度值，如下图：

![](media/b3a18bca1b2a7b5337470735e5a0c5aa.png)

![](media/f78128c148de3862a3fe10d86f063e22.png)

![](media/eb105b8b2f9c1868b586573230718e07.png)

程序2：

通过温度控制mirco：bit上点阵显示不同图案（注意：程序中的温度值可以根据当地环境适当的调整）

可以直接加载我们提供的程序，文件位置如下图：

|文件类型|路径|文件名|
|-|-|-|
|Hex|Makecode 教程\3.实验课程\Microbit 基础课程\第5课学习测温度\程序|学习测温-2.hex|

也可以自己通过拖动程序块来编写程序程序，操作步骤如下：（这里设置的温度值可以根据实际情况重新设置）

（1）先点击“Led”栏，再点击“Led”栏下的“更多”，找到并拖出指令方块“led
启用
fasle”放入“当开机时”指令方块中，点击“false”后面的下拉三角形按钮选择“true”。

![](media/5ad6b9ff6d3457d88ab5fef92ed4c2fa.png)

点击“逻辑”栏，先找到并拖出指令方块“如果为...then...否则”放入“无限循环”指令方块中，再拖出“=”方块放入“true”方框中。

![](media/6274b5262324ba10b291a57404bdc7f0.png)

点击“输入”栏，找到并拖出指令方块“温度(℃)”放入“=”的左侧，点击“=”后面的下拉三角形按钮选择“≥”，再将“≥”右侧的0改成35。

![](media/0655ca867a2d9fe811ddba0bc45813db.png)

点击“基础”栏，找到并拖出指令方块“显示图标”放入如果为下面，又复制指令方块“显示图标”1次放入否则下面并点击“❤”图案后面的下拉三角形按钮选择“

![](media/9fa58029eb504582ee5a915f591ea583.png)

”图案。

![](media/bfdd150cb4822ad71f89af0d138bbc0d.png)

完整的程序程序：

![](media/3682d6188821c84b175e617a15b2609a.png)

................①“当开机时”指令方块仅运行一次以启动程序。

.................②打开LED点阵屏。

.................③在“无限循环”指令方块之内，程序循环运行。

..................④当温度传感器检测到的外界温度≥35℃是正确的，就运行如果为下的程序。

..................⑤LED点阵显示“❤”图案

..................⑥当温度传感器检测到的外界温度≥35℃是不正确的，就运行否则下的程序。

..................⑦LED点阵显示“![](media/9fa58029eb504582ee5a915f591ea583.png)”图案

点击micro:
bit在线编程工具的“JSJavaScript”,你可以看到对应的JavaScript语言程序程序：

![](media/3aab1302cef32173d746b97ac7ed5325.png)

实验结果：

按照之前的方式将程序2下载到micro：bit，micro USB数据线不要拔下来，利用micro USB数据线上电，外界环境中的温度小于35℃时，micro：bit主板的5×5LED点阵中显示图案

![](media/4b1765e12b413dc5d562f2a16d32392f.png)，用手按住micro：bit主板的温度传感器，温度大于等于35℃时，5×5LED点阵中显示图案![](media/f2705fbc4886efcfaac96589ca255f66.png)

。

#### 第六课 地磁传感器（磁力计/指南针）

![](media/68b3f54592553e620f6d39f30f90feb9.png)

实验说明：

本实验项目主要介绍micro:bit地磁传感器的使用，地磁传感器除了检测地磁场强度外，还能当作指南针确定方向，同时也是航姿参考系统(AHRS)的重要组成部分。micro:bit V2主板采用的是LSM303AGR 地磁传感器，磁场动态范围为±50 gauss。在micro:bit V2主板中，磁力检测、指南针积木块均用到了磁力计栏，本实验中，将先介绍指南针，然后查看磁力计原始数据。常见的指南针主要部件是一根磁针，在地磁场的作用下可以转动并指向地磁北极（地磁北极是在地理南极附近），用来辨别方向。

micro:bit内部的一个地磁传感器（磁力计、指南针），我们可以读取这个磁力计的读数来判断方位，得到相对于北磁极的数值。返回值是0到360之间的数值，在磁力计首次开始工作（带到新位置后）时系统会自动要求我们对micro:bit主板校准，正确的校准方式是旋转micro:bit主板。需要注意的是，附近要是有金属物件可能会影响读数和校准准确性。

一些地球物理学家们确信，地球磁场是因为固态铁质内核被液态金属“海”所包围而形成的。磁力计指向的北是地磁北极，目前地磁南北极位置位于地理南北极地区，但并不与地球的南北极点完全重合，磁北极和真正的地理北极之间存在一个磁偏角。需要指出的是磁极位置是一直在变化的，历史上还出现过地磁逆转的情况。

我们称呼上的地磁南极，其实是物理上的磁北极，而地磁北极是物理上的磁南极，磁力线从磁北极出射，从磁南极进入，即地磁场从地理南极出来从地理北极进去。地磁南北级与地理南北级基本相反，但不在同一条线上也就是说地磁南极在地理北极附近，地磁北极在地理南极附近，地理南北极的连线和地磁南北级的连线构成磁偏角，即地磁北极（指南针指的方向）与地理北极间的夹角。

准备：

（1）通过micro USB线连接micro：bit和电脑。

（2）打开Web版本的Makecode。

如果选择通过导入Hex文件来加载项目，请单击“导入”。

如果要一一拖动程序块，请单击“新建项目”。

实验程序：

程序1：

按下按键A的时候，可以在屏幕上显示磁力计的读数。

可以直接加载我们提供的程序，文件位置如下图：

|文件类型|路径|文件名|
|-|-|-|
|Hex|Makecode 教程\3.实验课程\Microbit 基础课程\第6课地磁传感器\程序|地磁传感器-1.hex|

也可以自己通过拖动程序块来编写程序程序，操作步骤如下：

先点击“输入”栏，再点击“输入”栏下的“更多”，找到并拖出指令方块“校准指南针”放入“当开机时”指令方块中。

![](media/b08bfbd72a4583c881f9d442684ee1e7.png)

（2）点击“输入”栏，找到并拖出“当按扭 A     被按下时”指令方块。

（3）点击“基础”栏，找到并拖出指令方块“显示数字”放入“当按扭
A     被按下时”指令方块中，再点击“输入”栏，找到并拖出指令方块“指南针朝度(℃)”放入指令方块“显示数字”中。

![](media/31b1dd0214b5a24da40fe7fca186f18a.png)

完整的程序程序：

![](media/1c72022f45f991b7dc033709ef97e8b5.png)

................①“当开机时”指令方块仅运行一次以启动程序。

.................②校准指南针。

.................③按下micro:bit主板上的按键A。

.................④LED点阵显示指南针朝向角度。

程序说明：首先必须对micro:bit进行校准，因为每个地方地磁场不同，对结果有比较大的的影响，如果是第一次使用指南针，micro:bit会自动提示需要校准。

按照之前的方式将程序1下载至micro: bit，micro USB数据线不要拔下来，利用micro USB数据线上电，按下micro:bit主板上正面按键A时，micro:bit主板首先提示校准，屏幕(LED点阵)提示:“TILT TO FILL SCREEN”,然后进入校准界面，校准方式为：旋转micro:bit主板，使得屏幕(LED点阵)画一个封闭的正方形（25个LED都点亮），如下图所示：

![](media/48d5b52b9e555d71dc1b03492919e992.png)

当封闭的正方形画好后，会显示一个“笑脸”图案

![](media/7325b263227917a10b8cfc68a8add871.png)

，表示校准完成。

校准完成后，当每次按下按键A的时候，直接在屏幕上显示磁力计读数，北、东、南、西对应0°、90°、180°、270°。

程序2：

朝不同的方向旋转磁力计，LED点阵显示对应的方向图案。

可以直接加载我们提供的程序，文件位置如下图：

|文件类型|路径|文件名|
|-|-|-|
|Hex|Makecode 教程\3.实验课程\Microbit 基础课程\第6课地磁传感器\程序|地磁传感器-2.hex|

![](media/99b7430cb5e7695fcd0a9e294f10470a.png)

这个栏意思是，在循环中，不断读取磁力计的读数，并根据读数范围判断所指方向，让箭头指向当前的地磁北方。

![](media/d1a4e9f62bdf690ba809ae35c347b233.png)

如图所示，如果读数在292.5和337.5之间，就让显示屏显示一个指向右上方的箭头，由于程序里不能输入0.5，所以取的判断数值是293和338。之后再加入其它逻辑判断条件，就得到了完整的程序。

寻找指令方块：

![](media/5659f27a281e61ead00741a62399dcbb.png)![](media/01e1826f39d62068f12f4a9e75b2eb79.png)![](media/e15a5924f7ea434dceaa496a440ff0d4.png)

![](media/df8829eec26010a17016113a02f4493e.png)

![](media/5773c96b9c84dd5b414e270829f81aba.png)

组合指令方块：

![](media/716bbf57ef17def3b5b3c07150de2fae.png)

![](media/c90c88b86b614c766912bd47ee725675.png)![](media/9c47a98825ccf38666cfcac016b672c1.png)

![](media/282874be4c0786cee55f26f1e6939a68.png)

实验结果：

按照之前的方式将程序2下载到micro：bit，micro USB数据线不要拔下来，利用micro USB数据线上电，提示校准（校准方法请参考:上面程序1部分），校准完成后，旋转移动micro:bit主板，可以看到micro:bit主板上LED点阵显示方向图案。

#### 第七课 加速度传感器（加速度计）

![](media/24c31bb0174e2ac672203e5c36c6875e.png)

实验说明：

micro:bit V2主板内置有LSM303AGR
重力加速度传感器（加速度计），其具有8/10/12 bits的分辨率，程序科设置量程为1g、2g、4g,、8g。

我们常使用加速度计来检测机器的姿态。

在本实验项目中，将介绍加速度传感器（加速度计）对几个特殊姿态的检测，之后来查看加速度传感器输出的三轴原始数据。

准备：

（1）通过micro USB线连接micro：bit和电脑。

（2）打开Web版本的Makecode。

实验程序： 

程序1：

对micro：bit不同的操作，LED点阵显示对应的数字。

可以直接加载我们提供的程序，文件位置如下图：

|文件类型|路径|文件名|
|-|-|-|
|Hex|Makecode 教程\3.实验课程\Microbit 基础课程\第7课加速度传感器\程序|加速度传感器-1.hex|

也可以自己通过拖动程序块来编写程序，操作步骤如下：

（1）点击“输入”栏，找到并拖出指令方块“当震动”。

（2）点击“基础”栏，找到并拖出指令方块“显示数字”
放入指令方块“当震动”中，将数字0改成1。

![](media/09131188cfd5d2de777d98617247b130.png)

（3）复制程序串

![](media/09131188cfd5d2de777d98617247b130.png)

7次，先后分别点击“震动”后面的下拉三角形按钮选择“logo up”、“logo down”、“screen up”、“screen down”、“tilt left”、“tilt right”、“free fall”，再将数字1分别对应的改成2、3、4、5、6、7、8。

完整的程序：

![](media/f950dc88b68179018b60f9870154a7c4.png)

...................①振动microbit主板。

...................②LED点阵显示数字1。

...................③microbit主板的徽标朝上。

...................④LED点阵显示数字2。

...................⑤microbit主板的徽标朝下。

...................⑥LED点阵显示数字3。

...................⑦microbit主板屏幕朝上。

...................⑧LED点阵显示数字4。

...................⑨microbit主板屏幕朝下。

...................⑩LED点阵显示数字5。

...................⑪microbit主板向左倾斜。

...................⑫LED点阵显示数字6。

...................⑬microbit主板向右倾斜。

...................⑭LED点阵显示数字7。

...................⑮microbit主板自由落体。

...................⑯LED点阵显示数字8。

程序2：

检测加速度在X轴，Y轴，Z轴的不同的值

可以直接加载我们提供的程序，文件位置如下图：

|文件类型|路径|文件名|
|-|-|-|
|Hex|教程\Makecode 教程\3.实验课程\Microbit 基础课程\第7课加速度传感器\程序|加速度传感-2.hex|

也可以自己通过拖动程序块来编写程序，操作步骤如下：

(1)点击“高级”下的“串行”栏，找到并拖出指令方块“串行
重定向到USB”放入“当开机时”指令方块中。

![](media/4e68522e5563b8cad3c55e59c4c56654.png)

(2)再从“串行”栏，找到并拖出指令方块“串行写入数值
x =0”放入指令方块“无限循环”中。

![](media/bfefae977b13d8ad03f019f09ce44800.png)

(3)点击“输入”栏，找到并拖出指令方块“加速度值(mg) x”放入指令方块“串行写入数值 x
=0”中0处，并将“=”左侧的“x”改成大写的“X”。

![](media/c9be35ca55f0e3ac75d1df68d67ae24f.png)

(4)点击“基础”栏，找到并拖出指令方块“暂停(ms) 100”放入“无限循环”指令方块中，设置延时100毫秒。

![](media/95c316999efbb55ac22382a00ba28381.png)

(5)复制程序串

![](media/95c316999efbb55ac22382a00ba28381.png)

2次放入“无限循环”指令方块中，将先“=”左侧的“X”分别改成“Y”、“Z”，再分别对应的点击“x”后面的下拉三角形按钮选择“y”、“z”。

![](media/e01c5db506a5d2838d8907ec1b1a72d5.png)

完整的程序：

![](media/7114c02d1d0b5d2f9f5118e772f45c23.png)

.................①“当开机时”指令方块仅运行一次以启动。

.................②串行重定向到USB。

.................③在“无限循环”指令方块之内，循环运行。

.................④串行写入数值X=x轴的加数度值（mg）

....................⑤延时时间100毫秒。

....................⑥串行写入数值Y=y轴的加数度值（mg）

....................⑦延时时间100毫秒

....................⑧串行写入数值Z=z轴的加数度值（mg）

....................⑨延时时间100毫秒

按照之前的方式将程序1下载到micro：bit，micro USB数据线不要拔下来，利用micro USB数据线上电，打开数据显示(设备)按钮。

![](media/821a64a53c3a9709ff556e71b070f4dd.png)

首先，查阅MMA8653FC数据手册，以及micro:bit的硬件原理图得知，micro:bit加速度计坐标如下图所示：

![](media/6303a0ac122680207fe856d9be38d01c.png)

显示出如下界面：分别显示了加速度在X轴，Y轴，Z轴的分解，以及加速度的合成(重力加速度及其它外力作用的加速度合成)，如下图:
![](media/ded4e05f2b15d694e2061159628574dc.png)

实验中，先将加速计Z轴朝上，然后再将加速计X轴朝上，最后将加速计Z轴朝上，可得数据变化如上图所示

如果你的电脑系统是Windows7/8而不是Windows 10，则在Google Chrome中是不能进行设备配对，从而读取不了相应的数字信号或模拟信号，可是又需要读取相应的传感器/栏的数字信号或模拟信号，那怎么办呢？这里就可以使用CoolTerm软件来读取串口的。

打开CoolTerm，点击Options，选择串行Port，设置COM口和波特率，波特率设置为115200（经过测试，micro:bit的USB串口通讯波特率是115200），点击OK后，最后点击Connect。CoolTerm串口监视器分别显示了加速度在X轴、Y轴、Z轴的分解，以及加速度的合成(重力加速度及其它外力作用的加速度合成)，先将加速计Z轴朝上，然后再将加速计X轴朝上，最后将加速计Z轴朝上,可得数据变化如下图：

![](media/b4f4201cccf6ac0dadffb952b7596895.png)

实验结果：

按照之前的方式将程序1下载到micro：bit，利用micro USB数据线上电，将micro:bit主板晃动，则可见micro:bit显示数字1（表明只要有晃动，无论朝哪个方向晃动，该条件都将满足）。

当micro:bit主板的Logo朝上时，LED点阵显示数字2，Logo朝上示意图如下所示：

![](media/1600323e3e61e331c248cbeda5ccdcfc.jpeg)

同理，micro:bit主板的Logo朝上时，LED点阵显示数字3(倒立的3)，Logo朝下示意图如下所示：

![](media/3be80acf957e53117f695801ce19c449.jpeg)

当屏幕朝上（指的是LED点阵朝上）时，LED点阵显示数字4。如下图所示：

![](media/5797dd7be9a9c2d3226123e0c29db0bd.jpeg)

同理，当屏幕朝下（指的是LED点阵朝下）时，LED点阵显示数字5。

当micro:bit
主板向左倾斜（是指LED点阵先朝上，然后再往左边倾斜）时，LED点阵显示数字6。如下图所示：

![](media/326095934bcff0a925b4f9a09d6cf7d2.jpeg)

同理，当micro:bit主板向右倾斜（是指LED点阵先朝上，然后再往右边倾斜）时，LED点阵显示数字7。如下图所示：

![](media/185b0ac204e9b2c54dd8fa93d852568c.jpeg)

当不小心碰到micro:bit主板使其从桌面掉落，则为做自由落体运动，此时，micro:bit主板满足自由落体的条件，则LED点阵显示数字8。（注意：此方法操作时，很容易把micro:bit主板摔坏，不建议操作）

注意：（3g、6g、8g，
如果需要满足此条件，则需要达到3倍，6倍，8倍重力加速度甩动micro:bit主板。如果你们有兴趣的话，这部分程序可以自己添加）

#### 第八课 microbit的光照强度检测

![](media/5bbafad58a34792768c8370e8ee8c2cf.png)

实验说明：

本实验将介绍micro:bit对外界光照强度的检测，由于micro:bit并不自带光敏传感器，对外界光照强度的检测是通过LED矩阵进行的，LED矩阵被用来感知周围的光，并反复地将LED转换成输入，并采样电压衰减时间。这样检测出来的光照强度是一个相对值。

准备：

（1）通过micro USB线连接micro：bit和电脑。

（2）打开Web版本的Makecode。

实验代码：

可以直接加载我们提供的程序，文件位置如下图

|文件类型|路径|文件名|
|-|-|-|
|Hex|Makecode 教程\3.实验课程\Microbit 基础课程\第8课光照强度检测\程序|光照强度检测.hex|

也可以自己通过拖动代码块来编写代码程序，操作步骤如下：

（1）点击“高级”下的“串行”栏，找到并拖出指令方块“串行写入数值
USB”放入“当开机时”指令方块中。

![](media/4e68522e5563b8cad3c55e59c4c56654.png)

（2）再从“串行”栏，找到并拖出指令方块“串行写入 x
=0”放入指令方块“无限循环”中。

![](media/bfefae977b13d8ad03f019f09ce44800.png)

（3）点击“输入”栏，找到并拖出指令方块“亮度级别”放入指令方块“
串行写入x =0”中0处，并将“=”左侧的“x”改成大写的“Light intensity”。

![](media/dbbac74f78667f34537daa85bad2c04d.png)

（4）点击“基础”栏，找到并拖出指令方块“暂停 (ms) 100”放入“无限循环”指令方块中，设置延时100毫秒。

![](media/17ca110943710449a4d327b75caadab6.png)

完整的代码程序：

![](media/ebd01529974676325843f65c5fb916c2.png)

.................①“当开机时”指令方块仅运行一次以启动程序。

.................②串行重定向到USB。

.................③在“无限循环”指令方块之内，程序循环运行。

.................④串行写入数值Light intensity=光照强度。

....................⑤延时时间100毫秒。

实验结果：

按照之前的方式将代码下载到micro：bit，micro USB数据线不要拔下来，利用micro USB数据线上电，打开数据显示(设备)按钮。

![](media/04b472326485cf676cdb4dd61ca6ef1a.png)

数据显示器显示亮度级别值，用手全部遮住micro:bit的LED点阵，亮度级别约为0；然后将micro:bit的LED点阵放置于光照下，随着光照强度增强，亮度级别值也在逐渐增大。

![](media/d7f1751ea1e6f251376dee5390ed21fa.png)

如果你的电脑系统是Windows7/8而不是Windows 10，则在Google Chrome中是不能进行设备配对，从而读取不了相应的数字信号或模拟信号，可是又需要读取相应的传感器/栏的数字信号或模拟信号，那怎么办呢？这里就可以使用CoolTerm软件来读取串口的。

打开CoolTerm，点击Options，选择串行Port，设置COM口和波特率，波特率设置为115200（经过测试，micro:bit的USB串口通讯波特率是115200），点击OK后，最后点击Connect。这样，CoolTerm串口监视器显示光线亮度级别值。

![](media/77a6de8ab9b171353693610a09f3a83c.png)

#### 第九课 扬声器

![](media/ac515b9ae8891dc32f368a29f194a2fb.png)

实验说明：

micro:bit主板有内置扬声器，这使得在你的项目中添加声音变得非常容易。通过编程使扬声器发出各种各样的音调，例如编写一首歌曲：《欢乐颂》，让扬声器播放出来。

准备：

（1）通过micro USB线连接micro：bit和电脑。

（2）打开Web版本的Makecode。

实验程序：

可以直接加载我们提供的程序，文件位置如下图：

|文件类型|路径|文件名|
|-|-|-|
|Hex|Makecode 教程\3.实验课程\Microbit 基础课程\第9课扬声器\程序|扬声器.hex|

也可以自己通过拖动程序块来编写程序程序，操作步骤如下：

（1）从“基础”栏中找到并拖出指令方块“显示图标”放入“当开机时”指令方块中，点击下拉三角形选择“

![](media/7f7aa904c35f83b61c7c560ad1e40d2a.png)

”图案。

![](media/be2df4fdb597bfbd4b9352c2c1f6e252.png)

（2）点击“音乐”栏，找到并拖出指令方块“播放声音
咯咯声
值到结束”放入“”指令方块中，再从“基础”栏中找到并拖出指令方块“暂停(ms) 100”放入“无限循环”指令方块中，将100改成1000。

![](media/200a76a043f9e4abe1aa9c1c77fd9904.png)

（3）复制程序串

![](media/200a76a043f9e4abe1aa9c1c77fd9904.png)

3次也放入“无限循环”指令方块中，点击下拉三角形分别选择“快乐”,”你好”,”打哈欠”。

![](media/e8cb8be5cba16b281a997dd76f6cfe86.png)

完整的程序程序：

![](media/a8ffa4409786d41f2dfeff8f560f5057.png)

....................①“当开机时”指令方块仅运行一次以启动程序。

....................②LED点阵屏显示“![](media/7f7aa904c35f83b61c7c560ad1e40d2a.png)”图案。

....................③在“无限循环”指令方块之内，程序循环运行。

....................④蜂鸣器发出“咯咯声”音

....................⑤延时1000毫秒

....................⑥蜂鸣器发出“快乐”音

....................⑦延时1000毫秒

....................⑧蜂鸣器发出“你好”音

....................⑨延时1000毫秒

....................⑩蜂鸣器发出“打哈欠”音

....................⑪延时1000毫秒

实验现象: 

按照之前的方式将实验程序下载到micro：bit板，利用micro USB数据线上电，micro:bit主板上的扬声器发出声音且LED点阵显示音乐标志图案。

#### 第十课 触摸感应logo

![](media/644695850097c5ade080bb4848b4b481.png)

实验说明：

如果你有了micro:bit主板，你可以在你的项目中使用金色的触摸感应logo作为另一个输入，这就像多了一个按钮。触摸感应采用的是电容式触摸传感器，当你手指按下（或触摸）它时，它就能感应到电场的微小变化----就像你的手机或平板电脑屏幕一样。当你像按按钮一样按下它时，你可以在程序中触发事件。

准备：

（1）通过micro USB线连接micro：bit和电脑。

（2）打开Web版本的Makecode。

实验代码：

可以直接加载我们提供的程序，文件位置如下图：

|文件类型|路径|文件名|
|-|-|-|
|Hex|Makecode 教程\3.实验课程\Microbit 基础课程\第10课触摸感应logo\程序|触摸感应logo.hex|

也可以自己通过拖动代码块来编写代码程序，操作步骤如下：

（1）删除掉“当开机时”指令方块和“无限循环”指令方块。

（2）从“输入”栏中找到并拖出“当微标
被按下”指令方块，点击下拉三角形按钮选择 被触摸。

![](media/f58434f3ecaebb001d0ec5dd0e611031.png)

（3）先点击“变量”栏，再点击“设置变量”按钮，在出现的对话框中输入start，点击OK，这样就创建了变量“start”。从“变量”栏中拖出变量指令方块“将start
设为 0”放入指令方块“当微标被触摸”中。

![](media/9ab414d25bce456a2715ef96cc23e973.png)

（4）点击“输入”栏下的更多，找到并拖出“运行时间(ms)”放入变量指令方块“将start
设为 0”的数字0处。

![](media/e2b77859b764e09a37fc5acd85ab9939.png)

（5）从“基础”栏中找到并拖出指令方块“显示图标❤”放入“当微标被触摸”指令方块中。

![](media/6ed86414b6d1c0598e6e09881c1a68ff.png)

(6)从“输入”栏中找到并拖出“当微标被按下”指令方块，选择被松开，接着用同样的方法再创建变量“time”。从“变量”栏中拖出变量指令方块“将
time
设为0”放入指令方块“当微标被松开”中，并从“数学”栏中找到并拖出“0-0”方块放入变量指令方块“将
time 设为0”的数字0处。

![](media/3bf6b109ce8fcb06452a04344666e7d2.png)

(7)点击“输入”栏下的更多，找到并拖出“运行时间(ms)”放入“0-0”方块的左侧数字0处，再从“变量”栏中拖出变量指令方块“start”放入右侧数字0处。

![](media/90985ecdd338bd4e5297449cb1bbea5a.png)

(8)先从“基础”栏中找到并拖出指令方块“显示数字”放入“当微标被松开”指令方块中，再从“数学”栏中找到并拖出方块“平方根
0 ”放入数字0处，点击下拉三角形按钮选择 整数÷。

![](media/deb92aa25372fd930364cf375eafb8cd.png)

（9）从“变量”栏中找到并拖出变量指令方块“time”放入右侧数字0处，再把右侧的数字0改成1000。

![](media/2f1aeb983b01aa1c9df5752752fb7f17.png)

完整的代码程序：

![](media/7a83fbcc1d95615afa1b545a86ab208e.png)

①手触摸microbit主板上的logo标志

②将running time值赋给于变量start

③microbit主板的LED点阵显示“❤”图案

③手释放microbit主板上的logo标志

④将running time－变量start的值赋给于变量time

⑤LED点阵屏显示变量time除于1000的取整

实验现象

按照之前的方式将实验代码下载到micro：bit板，利用micro USB数据线上电，手指按住micro:bit主板上“Logo”标志处，micro:bit主板上的LED点阵显示“❤”图案；手指松开micro:bit主板上“Logo”标志处，会出现数字。

#### 第十一课 麦克风

![](media/3073a8af772ab91ecf264843b37d3b74.png)![](media/7f0741158e734ff8449d5b87d5ba85f4.png)

实验说明：

micro:bit
主板有一个内置麦克风，可以测量环境的声音程度。你可以使用它作为一个简单的输入---当你鼓掌时，micro:bit主板上前面内置麦克风LED指示灯会被打开。它还可以测量声音的强度，所以你可以制作一个噪音等级表或与音乐合拍的迪斯科灯光。麦克风是在micro:bit
主板的背面，而在前面，你会发现一个内置麦克风LED指示灯，还有紧挨着让声音进入麦克风的孔。当你micro:bit主板在测量声音级别时，它就会亮起来。

准备：

（1）通过micro USB线连接micro：bit主板和电脑。

（2）打开Web版本的Makecode。

实验一

可以直接加载我们提供的程序，文件位置如下图：

|文件类型|路径|文件名|
|Hex|Makecode 教程\3.实验课程\Microbit 基础课程\第11课麦克风\程序|麦克风-1.hex|

也可以自己通过拖动程序块来编写程序程序，操作步骤如下：

（1）删除掉“当开机时”指令方块和“无限循环”指令方块。

（2）先从“输入”栏中找到并拖出“大声
声音”指令方块，再从“基础”栏中找到并拖出指令方块“显示图标”放入“但开机时”指令方块中。

![](media/c0d7f2f20c780c337c7f445986ef5946.png)

复制程序串

![](media/c0d7f2f20c780c337c7f445986ef5946.png)1次，点击“大声”后面的下拉三角形按钮选择“安静”，再点击❤后面的下拉三角形按钮选择![](media/9a40d2f51ed0a372a82e559cdb2ca0dd.png)

。

![](media/e6bc24303101ce438072e167bc78cea7.png)

完整的程序程序：

![](media/5294b7d76c40871df0b9ae907f251915.png)

....................①microbit主板上的麦克风检测到声音

....................②LED点阵屏显示“❤”图案

....................③microbit主板上的麦克风未检测到声音

....................④LED点阵屏显示“![](media/04fdfc9060943954e7938bb1a741d626.png)”图案

实验现象

按照之前的方式将实验程序1下载到micro：bit板，利用micro USB数据线上电，当你鼓掌时，micro:bit
主板上的LED点阵显示“❤”图案；当外界环境安静时，micro:bit
主板上的LED点阵显示“

![](media/04fdfc9060943954e7938bb1a741d626.png)

”图案。

4实验二

可以直接加载我们提供的程序，文件位置如下图：

|文件类型|路径|文件名|
|-|-|-|
|Hex|Makecode 教程\3.实验课程\Microbit 基础课程\第11课麦克风\程序|麦克风-2.hex|

也可以自己通过拖动程序块来编写程序程序，操作步骤如下：

（1）点击“高级”下的“串行”栏，找到并拖出指令方块“串行
重新 定向到 USB”放入“当开机时”指令方块中。

![](media/1cd5710476f4682bb5f92c51072d5d24.png)

（2）先点击“变量”栏，再点击“设置变量”按钮，在出现的对话框中输入maxSound，点击OK，这样就创建了变量“maxSound”。从“变量”栏中拖出变量指令方块“将maxSound
设为 0”放入指令方块“当开机时”中。

![](media/91b812aa1a8b099ae40f50ff33d1b3db.png)

先点击“逻辑”栏，找到并拖出“如果为...则....否则”放入“无限循环”指令方块中，再从“输入”栏中找到并拖出“当按钮
A 被按下”指令方块放入then处。

![](media/41dfc4e19a7f130b54bd19373ddd48ca.png)

先从“基础”栏中找到并拖出指令方块“显示数字”放入如果为下，再从“变量”栏中拖出变量指令方块“maxSound”放入数字0处。

![](media/bc762c95edebfda41dd7f13c0cab61ca.png)

用相同的方法创建变量“soundLevel”，再从“变量”栏中拖出变量指令方块“将soundLevel     设为
0”放入否则下，然后从“输入”栏中找到并拖出“声音响度”指令方块放入数字0处。

![](media/ec2bf2b85db1ae161e2dfeb917b6dd8b.png)

先点击“Led”栏，找到并拖出指令方块“绘制条形图值为
0 最高
0”也放入否则下，再从“变量”栏中拖出变量指令方块“soundLevel”放入值为后面的数字0处，然后将
最高 后面的数字0改成255。

![](media/e714988085a64834c1ce381b0085f5fd.png)

先从“逻辑”栏中找到并拖出“如果为 true 则
”放入“否则”下，再从“逻辑”栏中拖出“0 \>
0”方块放入then处，然后从“变量”栏中拖出变量指令方块“soundLevel”放入左侧的数字0处，最后从“变量”栏中拖出变量指令方块“maxSound”放入右侧的数字0处。

![](media/bafec879ec09f81c1fac2ca94470e397.png)

从“变量”栏中拖出变量指令方块“将 maxSound     设为0”放入第2个如果为下，接着又从“变量”栏中拖出变量指令方块“soundLevel”放入数字0处。

![](media/6f785f7a07207cafbd29adb26dd6c8ce.png)

完整的程序程序：

![](media/fb7685d1417d647d2a239e52c40dacf8.png)

实验现象

按照之前的方式将实验程序2下载到micro：bit板，利用micro USB数据线上电，点击“显示控制台(设备)”按钮：

![](media/e22507af4953df977269bbdb2463d69e.png)

显示串口输出数据，当外界环境的声音增大时，串口输出的声音级别值也增大，如下图所示：

![](media/50b81518d9f7925b0c20476ab1f64185.png)

并且，当你按下micro:bit主板上的A键时，micro:bit主板上的LED点阵显示检测到的此时环境中最大声音级别值（这里需要注意：通过按micro:bit背面的重置按钮重置最大值。）；当鼓掌时，LED点阵显示声音级别大小图案。

#### 第十二课 microbit的蓝牙无线通信

![](media/55b2424d88ba1ba8a711c49418ca8dc6.png)

实验说明：

micro:bit主板了处理器内置蓝牙5.1低功耗的BLE(蓝牙 Low Energy)设备）以及2.4GHz天线，可进行蓝牙无线通信和2.4GHz无线通信。使得micro:bit主板可以与各种蓝牙设备进行通信，包括智能手机和平板电脑。

在本实验中，主要讲解新款的micro:bit主板实现蓝牙无线通信功能，我们可以通过连接蓝牙，实现无线传输代码（信号）功能。我们利用一个苹果系统设备（手机/iPad）和micro:bit
主板连接，实现无线传输功能。设置安卓系统手机实现无线传输方法和苹果系统设备（手机/iPad）类似，这里就不一一介绍了。

准备：

通过micro     USB线将micro:bit主板连接到电脑上。

苹果系统设备（手机/iPad）或安卓系统手机。

实验步骤：

（1）如果你的智能手机/iPad是苹果系统的，需要先在电脑上进入网页：<https://www.microbit.org/get-started/user-guide/ble-ios/>
，点击“Download pairing HEX file”下载micro:bit的固件到创建的文件夹中或电脑桌面上，并将下载好的micro:bit固件烧入micro:bit主板中。（这一步只针对于苹果系统的智能手机/iPad）

![](media/cfaf7f8ae83cbe2636c39162a78adc7f.png)

![](media/4bcbd2456b3502d254617622b0f8707b.png)

（2）在苹果系统设备（手机/iPad）上打开

![](media/27924fdb3d67692df7c63d8d0fb72287.png)

，在App Store的搜索框中输入“micro bit”，然后选中micro:bit
选项，会出现下载界面（如下图所示：），点击“

![](media/962a57f92b78eea1f0e3e81463497a9c.png)

”，就可以下载安装对应的APP。

![](media/66d1f34d8d4c52e2b7c0ce10e602a063.png)

（3）苹果系统设备（手机/iPad）和micro:bit主板配对连接。

打开苹果系统设备（手机/iPad）上的蓝牙。

APP安装成功后，点击

![](media/ddfd27bdd24da96eb998ccc2e13fcf72.png)

打开APP，先确定micro     USB数据线已经将micro:bit主板和电脑连接上，再点击APP的第一项“Choose     micro:bit”，开始配对蓝牙。

![](media/34f5fbb1c0c371970d1aec6c59c5cbb5.png)

点击配对一个新的micro:bit，开始配对。

![](media/e20270a0ade9c00b61198b26fc2fd83b.png)

根据提示，首先同时按住micro:bit主板上的按键A和B，然后按下micro:bit主板后面的复位&电源按钮几秒钟（按键A和B不能松开），再松开复位&电源按钮，micro:bit主板上LED点阵会显示一个密码图案。最后松开micro：bit主板上的按键A和B，接着点击“下一步”。

![](media/c00520400ecd1f20f958c1c6d1a3c907.png)

![](media/cabc60d7f8a030f5c9d86ac7de6c7bd7.png)

在苹果系统手机/iPad上设置密码图案，使图案和micro:bit主板上显示的密码图案一样，点击“下一步”。

![](media/9411a5280e6f3b0d45306a31f80c1b38.png)

点击“下一步”，出现对话框，在对话框中点击“Pair”。几秒钟后，配对成功，同时micro:bit主板上的LED点阵显示“√”图案。

![](media/7b56c56e10415ac2881ac69448b4ad3c.png)![](media/803cb5cf5f7d595581a11f5e6b7e61ed.png)

![](media/dc570950dd81f427edb5ea58f50b3a7e.png)![](media/f72e83dc6276d520e82c349659106e1a.png)

（3）蓝牙配对成功后，开始利用APP编写代码，并上传代码。

a.点击第二项“Create Code”，进入编程界面，开始编写代码程序。（点击

![](media/f3e9cc7884f7bba807fa4633c429422b.png)，出现对话框![](media/e081360be7c91b7a156b01a787e4a58c.png)

，在对话框中直接点击“Create
√”后就进入编程界面）

![](media/d54bf2d1c01cd3c18544009b1f9dc5a0.png)

![](media/e9d98d39decfa257d39a05be6d751139.png)

![](media/a2258b54f29f9e9cfcb0adc3efb65eb1.png)

![](media/ce3027d92602f98c35a100435766f42a.png)

b.
将代码程序项目名称设置为“1”，点击保存图案“

![](media/a32c2d832ab38d19eb623108143c744e.png)

”，保存代码程序。

![](media/f069f9fa1724e81c8ab4b1b0af1c3449.png)

c.项目代码程序保存成功后，点击第三项“Flash”进入上传代码程序界面。默认选择代码程序是刚刚保存的项目名称为“1”的代码程序，然后点击“Flash”上传代码程序“1”。

![](media/c1661720ea2eaa521ff31a778501eb23.png)

![](media/350abcbb09d431d40427f34c3764f2eb.png)

![](media/4863bf826f119805a6a9bf9c12d5ec81.png)

d.几秒钟后，代码程序“1”上传成功，会显示如下图。然后micro:bit主板上的LED点阵显示跳跃的“心”对应图案。

![](media/ebfd31347a0553de0be4e01636652a15.png)

### Microbit 扩展课程

#### 第一课 外接LED闪烁

实验说明：

LED 闪烁实验是比较基础的实验之一，在使用方法中，我们可以控制micro:
bit自带的5 x 5点阵中的LED闪烁。但是，我们在这个实验中是外接一个LED，然后控制LED闪烁。

器件的介绍：

![](media/c471f7ee0c9976201a25d61000eadf26.png)
![](media/2e8e238224fd6af3043b68e4b5b97116.png)

LED是一种二极管，二极管是用[半导体材料](https://baike.baidu.com/item/%E5%8D%8A%E5%AF%BC%E4%BD%93%E6%9D%90%E6%96%99/5078)(硅、硒、锗等)制成的一种电子器件。它具有单向导电性能，即给二极管阳极极（长脚）和阴极（短脚）加上正向电压，并且只有当其正极电压高于其负极电压时才能工作时，二极管导通（即LED点亮）。当给阳极和阴极加上反向电压时，二极管截止（即LED不亮）。
因此，二极管的导通和截止，则相当于开关的接通与断开，LED有不同的颜色、亮度和尺寸。发光二极管有一个阳极（+）和一个阴极（-），它们只能让电流从一个阳极流向阴极。LED不能直接连接电源，会损坏元件，在LED电路中必须串联一定电阻的电阻器。

电阻器：电阻器是电子电路中限制或调节电流流动的电子元件。左边是电阻器的外观，右边是电阻器在电路中表示的符号。电阻(R)的单位为欧姆(Ω)，1 mΩ= 1000 kΩ，1kΩ=
1000Ω。电阻器是电子电路中限制或调节电流流动的电子元件。左边是电阻的外观。常见电阻阻值有：220Ω，1KΩ，10KΩ等。

![](media/382842c9a958c9e23a9710da21534460.jpg)
![](media/5d3c73acce9112ad929552bf11f876e4.png)

你可以使用它们来保护敏感组件，如LED。电阻的强度（以欧姆为单位）用小色环标记在电阻器的主体上。每种颜色代表一个数字，你可以用电阻对照卡查找。

![](media/20ccab3015bf4998f65defb2a5bb9184.png)![](media/49b0d9908b030ea77386c726ebc30f7b.png)

在相同的电压下，会有更小的电流和更大的电阻。电流、电压、电阻之间的联系可以用公式表示：I=U/R。在下图中，目前通过R1的电流:
I = U / R = 3 V / 10 KΩ= 0.000 3A= 0.3mA。

![](media/b3eec552e4dfad361833730698621776.png)

不要把电阻很低的电阻直接连接在电源两极，这样会使电流过高而损坏电子元件。电阻器是没有正负极之分。

面包板的结构和使用方法：

面包板是实验室中用于搭接电路的重要工具，熟练掌握面包板的使用方法是提高实验效率，减少实验故障出现几率的重要基础之一。下面就面包板的结构和使用方法做简单介绍。

![](media/0ec1c3cce5e8ee8b76c54b8725b534d6.jpg)

　　
面包板的外观和内部结构如上图所示，常见的最小单元面包板分上、中、下三部分，上面和下面部分一般是由一行或两行的插孔构成的窄条，中间部分是由中间一条隔离凹槽和上下各5
行的插孔构成的条。

![](media/9ce240b7fd48db06ffda8462108b3a9b.jpg)

在面包板的两个窄条分别有两行插孔，两行之间是不连通的，一般是作为电源引入的通路。上方第一行标有“+”的一行有10组插孔，每组5个（内部5个孔连通），均为正极；上方第二行标有“-”的一行有10组插孔，每组5个（内部5个孔连通），均为接地。面包板下方的第一行与第二行结构同上。如需用到整个面包板，通常将“+”与“+”用导线连接起来，“-”与“-”用导线连接起来。

　　中间部分宽条是由中间一条隔离凹槽和上下各5
行的插孔构成。在同一列中的5
个插孔是互相连通的，列和列之间以及凹槽上下部分则是不连通的。外观及结构如下图：

![](media/4eee296872c069ec8e86344945f8e8a4.png)

中间部分宽条的连接孔分为上下两部分，是面包板的主工作区，用来插接原件和跳线。在同一列中的5个插孔（即a-b-c-d-e，f-g-h-i-j）是互相连通的；列和列（即1-30）之间以及凹槽上下部分（即e-f）是不连通的。在做实验的时候，通常是使用两窄一宽组成的小单元，在宽条部分搭接电路的主体部分，上面的窄条取一行做电源，下面的窄条取一行做接地。中间宽条用于连接电路，由于凹槽上下是不连通的，所以集成块一般跨插在凹槽上。

Micro:bit扩展板的介绍

单独一块micro bit控制板在和其他传感器
栏接线测试很不方便。为此我们特别设计了这个keyes micro bit
传感器V2扩展板。

micro bit 传感器V2扩展板不仅将micro bit控制板上的PIO口全部引出并扩展成3PIN接口（GND VCC 信号端），方便micro bit控制板和传感器栏连接；同时扩展板还将micro bit控制板上的常用的串口通信接口、I2C通信接口、SPI通信接口用间距为2.54mm的排针或排母引出，
大大方便了micro bit控制板和其他通信设备连接通信。

扩展板给micro bit控制板供电时，我们可以选择利用黑色DC头输入DC 7-9V
和利用micro USB接口输入DC 5V两种方法。扩展板给传感器供电时，我们可以通过V1 V2跳线帽连接选择供电电压，可选择3.3V和5V两种。

特别注意：由于扩展板外接传感器栏工作时，AMS1117-3.3V和NCP1117ST50T3G芯片工作电流过大，容易发烫，使用时特别注意，避免触碰这两个芯片，导致烫伤。

特点

两种电源输入方式：黑色DC头输入DC 7-9V

micro USB接口输入DC 5V

两种电压输出选择：V1 V2跳线帽连接选择电压输出

可选择3.3V和5V

自带1个电源指示灯

将所有micro bit控制板的PIO扩展成3PIN接口

引出1个串口通信接口

引出1个I2C通信接口

引出1个SPI通信接口

引脚说明

![](media/376674928c044efde92a9626a569ce78.jpg)

实验器材：

|![](media/c397f78aabce8a22c1af40c247a951c9.png)|![](media/09fe1a8f1ac9fc4349fb0a78a8d677ea.jpg)|![](media/b4117188f37ec0b208073b008dee9e6b.jpg)|![](media/d45516e7148c96da4a618a4d5e6c283c.png)|![](media/a0eec5c6b54d495909c6ca8b546d035d.png)|![](media/bd30ee502c6e394e4bb1e672e7bca77e.png)|![](media/0d873baf7590f1a76fe8bd7948efe04b.jpg)|
|-|-|-|-|-|-|-|
|micro：bit主板×1|keyes micro bit 传感器V2扩展板|红色LED×1|220Ω 电阻×1|面包板×1|公对母杜邦若干|micro USB数据线×1|

实验原理图

![](media/9a5bd4200af7c3323adc78655ed748ec.png)

实验接线图：

![](media/dda44185fd6c47ac2d240c0dd4b25300.png)

实验程序

根据上图的接线图接好线，由实验接线图可知，红色LED接在P9，先用micro USB数据线将电脑和micro：bit主板连接好，再启动micro:
bit在线编程工具进行编写代码。

在前面的基础课程中我们对micro:bit编程已经有了一定的了解，这里寻找指令方块就不再做细致说明

寻找指令方块：

![](media/4159a251eec881c2ab4f69fc59b25a47.png)
![](media/d94a87737d34c56521b3d987fc5cc150.png)
![](media/3dd6a68573caefaff217920637433b9e.png)

完整的代码程序：

![](media/a3273b2921e33a4198c5aaaa7e446670.png)
①“当开机时”指令方块仅运行一次以启动程序。
②关闭LED点阵屏。
③在“无限循环”指令方块之内，程序循环运行。
④将P9设置高电平（1），点亮红色LED。
⑤延时时间1000毫秒。
⑥将P9设置低电平（0），熄灭红色LED。
⑦延时时间1000毫秒。

实验结果

按照接线图接好线，上传完程序，上电后，我们就可以看到外接LED灯不停闪烁，间隔大约为1秒。

10.拓展实验

让红色LED灯接在IO口P2，要求红色LED灯不停的闪烁，间隔大约为0.5秒。

![](media/ebdd3aca2225781e2a758b81629ada52.png)

#### 交通灯

实验说明：

![](media/5c0036f36f930c140b3694d561000156.png)交通的发达，标志着城市的发达，相对交通的管理则显得越来越重要。交通灯是城市交通中的重要指挥系统，它与人们日常生活密切相关．随着人们生活水平的提高，对交通管制也提出了更高的要求，因此提供一个可靠、安全、便捷的多功能交通灯控制系统有着现实的必要性。 

对于复杂的城市交通系统，为了确保安全，保证正常的交通秩序，十字路口的信号控制必需按照一定的规律变化，以便于车辆行人能顺利地通过十字路口。

单片机自问世以来，性能不断提高和完善，其资源又能满足很多场合的应用，加之单片机具有集成度高、功能强、速度快、体积小、功耗低、使用方便、性能可靠、价格低廉，其易于产品化、抗干扰能力强、可在各种恶劣环境下可靠的工作等特点。

在我们学习micro：bit过程中，我们经常会用红绿黄3个LED外接电路来模拟路边交通灯的红绿黄灯闪烁。交通灯有两种，给机动车看的叫机动车灯，通常指由红、黄、绿（绿为蓝绿）三种颜色灯组成用来指挥交通通行的信号灯。

绿灯亮时，准许车辆通行，黄灯闪烁时，已越过停止线的车辆可以继续通行；没有通过的应该减速慢行到停车线前停止并等待，红灯亮时，禁止车辆通行。给行人看的叫人行横道灯，通常指由红、绿（绿为蓝绿）二种颜色灯组成用来指挥交通通行的信号灯，红灯停，绿灯行。

实验器材：

|![](media/742947bca3a40faf59f0a2e1ea6515ed.png)|![](media/09fe1a8f1ac9fc4349fb0a78a8d677ea.jpg)|![](media/81f4af09c40e6bc14f3dfdee52e8ff0c.png)|![](media/5ec1b04a4fbaa0f4789913daf07dc2ed.png)|![](media/539ff6066e7b9760236a50f03eb2cf4c.png)|
|micro：bit主板×1|keyes micro bit 传感器V2扩展板|红色LED×1|黄色LED×1|绿色LED×1|
|![](media/d45516e7148c96da4a618a4d5e6c283c.png)|![](media/c46830f39fd3bcf6dfb34845d2f81970.png)|![](media/03a0d25bf4946a1a295c20598c05668d.png)|![](media/04260641d0d7008c9bcd37f35112b546.jpg)||
|220Ω电阻×3|面包板×1|公对母杜邦若干|micro USB数据线×1||

实验原理图：

![](media/3d29348d9057058358014cb67e92cc1b.png)

实验接线图：

![](media/d4cf924d610c99d21252eb4b16788be5.png)

实验代码：

根据上图的接线图接好线，由实验接线图可知，绿色LED接在P6、黄色LED接在P4、红色LED接在P2，先用micro USB数据线将电脑和micro：bit主板连接好，再启动micro:
bit在线编程工具进行编写代码，操作步骤如下：

寻找指令方块：

![](media/f8b62b588c6c42b245d262172d22d3ab.png)
![](media/0ab34d9327083b522e0bcba5b655cc4f.png)
![](media/83466bf56b7afb5ccbf8de16c1d1e2b4.png)
![](media/ffed4bc90decb4d9145be0bd101a0a6c.png)

完整的代码程序：

![](media/313a1a7dbfd98a47de43f83554a8b5ee.png)
①“当开机时”指令方块仅运行一次以启动程序。 
②关闭LED点阵屏。 
③在“无限循环”指令方块之内，程序循环运行。 
④将P6设置高电平（1），点亮绿色LED。 
⑤延时时间5000毫秒。 
⑥将P6设置低电平（0），熄灭绿色LED。 
⑦do中的程序重复3次。 
⑧延时时间500毫秒 
⑨将P4设置高电平（1），点亮黄色LED。 
⑩延时时间500毫秒。 
⑪将P4设置低电平（0），熄灭黄色LED。 
⑫延时时间500毫秒。 
⑬将P2设置高电平（1），点亮红色LED。 
⑭延时时间5000毫秒。 
⑮将P2设置低电平（0），熄灭红色LED。

实验结果：

按照接线图接好线，上传完程序，上电后，我们就可以看到绿色LED亮5秒后熄灭，接着黄色LED闪烁三次，最后红色LED再亮5秒后熄灭，循环交替。

![](media/c3368c941e1d493c1ea05462e9065ab9.png)

拓展实验：

模拟人行道红绿灯，绿灯先亮5秒，接着再闪烁3次，再亮红灯。

![](media/76e1d04e1482f4d0715647c8aa3d9ed2.png)

#### 第3课 流水灯

实验说明：

流水灯顾名思义就是发出的光像流水一样。流水灯也叫广告灯，我们在霓虹四射的晚上，经常都能看到这种像流水这样的LED灯在闪烁。说到这里是不是有点跃跃欲试了，不错，这次的课程就是在上一节的基础上再增加几个LED灯，然后通过控制它们亮灭的时间和顺序，来实现流水灯的现象。

实验器材：

|![](media/742947bca3a40faf59f0a2e1ea6515ed.png)|![](media/09fe1a8f1ac9fc4349fb0a78a8d677ea.jpg)|![](media/b4117188f37ec0b208073b008dee9e6b.jpg)|![](media/d45516e7148c96da4a618a4d5e6c283c.png)|![](media/56c298f99b35d854e283c3d3c4d7316b.png)|![](media/bd30ee502c6e394e4bb1e672e7bca77e.png)|![](media/2046204f6f751e6b778f7afc4d466f7b.jpg)|
|-|-|-|-|-|-|-|
|micro：bit主板×1|keyes micro bit 传感器V2扩展板|红色LED×6|220Ω 电阻×6|面包板×1|公对母杜邦若干|micro USB数据线×1|

实验原理图：

![](media/3cecea36ab808d6db746def7b1768f42.png)

实验接线图：

![](media/7392d3c5fa7a34003a63fc88e5455f7d.png)

实验代码：

寻找指令方块：

![](media/a68009591cc5c58e36afbcc4d6e3b732.png)![](media/46145065238e27e5dab16c96fbd02919.png)

![](media/f397a489e7524ee31dec1e7b5edf9918.png)![](media/1f48db219fd44b999a74dab51e995e4a.png)

完整的代码程序：

![](media/b94135e00f52a66f054cbbe2c8600186.png)

![](media/4cafe6b15ea7f4fcf1e55e4068891b6d.png)

①“当开机时”指令方块仅运行一次以启动程序。 ②关闭LED点阵屏。 ③在“重复循环”指令方块之内，程序循环运行。
④将P7设置高电平（1），点亮红色LED。
⑤延时时间500毫秒。
⑥将P6设置高电平（1），点亮红色LED。
⑦延时时间500毫秒。 ⑧将P5设置为上拉（1），点亮红色LED。
⑨延时时间500毫秒。 ⑩将P4设置高电平（1），点亮红色LED。
⑪延时时间500毫秒。
⑫将P3设置高电平（1），点亮红色LED。
⑬延时时间500毫秒。 
⑭将P2设置高电平（1），点亮红色LED。 
⑮延时时间500毫秒。 
⑯将P7设置低电平（0），熄灭红色LED。 
⑰延时时间500毫秒。 
⑱将P6设置低电平（0），熄灭红色LED。 
⑲延时时间500毫秒。 
⑳将P5设置下拉（0），熄灭红色LED。 
㉑延时时间500毫秒。 
㉒将P4设置低电平（0），熄灭红色LED。 
㉓延时时间500毫秒。 
㉔将P3设置低电平（0），熄灭红色LED。 
㉕延时时间500毫秒。 
㉖将P2设置低电平（0），熄灭红色LED。 
㉗延时时间500毫秒。

实验结果：

按照接线图接好线，上传完程序，上电后，我们就可以看到IO口外接LED灯先逐个变亮，然后逐个变暗，循环交替。

![](media/84581bc0d2abbfc8557f1f36c04b83c7.png)

#### 第四课 呼吸灯

实验说明：

前面课程中，我们详细的介绍了通过代码控制LED灯的亮灭。在这个课程实验中我们将使用PWM来控制红色LED亮度不断地变化，模拟我们呼吸的效果。PWM是使用数字手段来控制模拟输出的一种手段。使用数字控制产生占空比不同的方波（一个不停在高电平与低电平之间切换的信号)来控制模拟输出。一般来说端口的输入电压只有两个0V与3V。如果想要1.5V的输出电压怎么办？有同学说串联电阻，对，这个方法是正确的。但是，如果想要0.5V，1V，2V等等之
间来回变动怎么办呢？不可能不停地切换电阻吧。这种情况下就需要使用PWM了，那它是怎么控制的呢，对micro：bit的数字端口电压输出只有LOW与HIGH两个，对应的就是0V与3V的电压输出，可以把LOW定义为0，HIGH定义为1，1秒内让micro：bit输出300个0或者1的信号。如果这300个全部为1，那就是完整的3V，如果全部为0，那就是0V。如果010101010101这样输出，刚好一半，输出端口就感觉是1.5V的电压输出了。这个和放映电影是一个道理，咱们所看的电影并不是完全连续的，它其实是每秒输出25张图片。在这种情况下，人的肉眼是分辨不出来的，看上去就是连续的了。PWM也是同样的道理，如果想要不同的电压，就控制0与1的输出比例控制就可以了。当然这和真实的连续输出还是有差别的，单位时间内输出的0,1信号越多，控制的就越精确。（输出电压=（开启时间/脉冲时间）\*最大电压值）
在下图中，绿线之间代表一个周期，其值也是PWM频率的倒数。换句话说，如果micro：bit PWM的频率是500Hz，那么两绿线之间的周期就是2毫秒。 analogWrite()
命令中可以操控的范围为0-255， analogWrite(255)表示100%占空比（常开），
analogWrite(127)占空比大约为50%（一半的时间）。

![](media/5d487d82f14fa5ec5e4b7940ad56726d.jpg)

脉冲宽度调制（PWM）有多种应用：灯亮度调节、电机调速、发声等。
以下是PMW的三个基本参数：

![](media/c539d1e2b61f1f5c41ae8d612f0cf809.png)

（1）脉冲宽度的振幅（最小/最大）

（2）脉冲周期（1秒内脉冲频率的倒数）

（3）电压水平（如：0V-3V）

（4）micro：bit上有6个PMW接口，即数字管脚P0、P1、P2、P3、P4和P10。

实验中，我们将红色LED接到了micro：bit主板的P0上，从micro:bit
引脚说明我们知道P0还可以当做模拟信号输入端口。我们通过P0端口控制外接LED亮度，先是逐渐变亮，然后是逐渐变暗，循环交替，模拟人体呼吸现象。

实验器材：

|![](media/ca29d1bc5c3eee0b3d971b39220c4d6d.png)|![](media/fa5b6b8e82566ea6828c90fc7dffd1bd.jpg)|![](media/b4117188f37ec0b208073b008dee9e6b.jpg)|![](media/d45516e7148c96da4a618a4d5e6c283c.png)|![](media/4869b5cc9b91238883d41fa82b66730d.png)|![](media/8386518faa484e3b1c57285c59764711.png)|![](media/19025f13d6602c7c3e14be37d633030d.jpg)|
|-|-|-|-|-|-|-|
|micro：bit主板×1|keyes micro bit 传感器V2扩展板|红色LED×1|220Ω电阻×1|面包板×1|公对母杜邦若干|micro USB数据线×1|

实验原理图：

![](media/097999c486f2b005396be5b91751ddb8.png)

实验接线图：

![](media/961e4873fc09e2c16ece6194c81de6df.png)

实验代码：

根据上图的接线图接好线，由实验接线图可知，红色LED接在P0处，先用micro USB数据线将电脑和micro：bit主板连接好，再启动micro:
bit在线编程工具进行编写代码。

寻找代码块

![](media/c1d18b115ab3dd5c0cb9c317af693fa5.png)![](media/d38581213addfc4a3b68307226a9ba46.png)

![](media/f8d178c04e46134f56551b07655661d2.png)

完整的代码程序：

![](media/55ee4b02339cb1561c55381cd15cd79f.png)
①“重复循环”指令方块仅运行一次以启动程序。 
②关闭LED点阵屏。 
③在“forever”指令方块之内，程序循环运行 ④当满足条件LED<1024时，运行do中的程序。 
⑤将变量LED设置为LED值+1 
⑥设置P0的模拟值为LED。 
⑦延时时间3毫秒。 
⑧当满足条件LED>0时，运行do中的程序。 
⑨将变量LED设置为LED值-1 
⑩设置P0的模拟值为LED。 
⑪延时时间3毫秒

实验结果：

按照接线图接好线，上传完程序，上电后，我们就可以看到外接红色LED先逐渐变亮，然后逐渐变暗，循环交替，和人体呼吸一样。

拓展实验：

micro bit 主板上的5\*5点阵中某个LED灯实现呼吸灯的效果。

![](media/df9ece1f78b047e5bd540736ef8a6792.png)

#### 第5课RGB

实验说明：

![](media/03da641fde15deaa6514c9ac84892b96.png)RGB色彩模式是工业界的一种颜色标准，是通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的，RGB即是代表红、绿、蓝三个通道的颜色，这个标准几乎包括了人类视力所能感知的所有颜色，是目前运用最广的颜色系统之一。

显示器大都是采用了RGB颜色标准，在显示器上，是通过电子枪打在屏幕的红、绿、蓝三色发光极上来产生色彩的，电脑一般都能显示32位颜色，有一千万种以上的颜色。电脑屏幕上的所有颜色，都由这红色绿色蓝色三种色光按照不同的比例混合而成的。一组红色绿色蓝色就是一个最小的显示单位。屏幕上的任何一个颜色都可以由一组RGB值来记录和表达。

RGB是从颜色发光的原理来设计定的，通俗点说它的颜色混合方式就好像有红、绿、蓝三盏灯，当它们的光相互叠合的时候，色彩相混，而亮度却等于三者亮度之总和，越混合亮度越高，即加法混合。红、绿、蓝三盏灯的叠加情况，中心三色最亮的叠加区为白色，加法混合的特点：越叠加越明亮，因此被通常被人们称为七彩LED。

红、绿、蓝三个颜色通道每种色各分为256阶亮度，在0时“灯”最弱——是关掉的，而在255时“灯”最亮。当三色灰度数值相同时，产生不同灰度值的灰色调，即三色灰度都为0时，是最暗的黑色调；三色灰度都为255时，是最亮的白色调。

RGB 颜色称为加成色，因为您通过将 R、G 和 B
添加在一起（即所有光线反射回眼睛）可产生白色。加成色用于照明光、电视和计算机显示器。例如，显示器通过红色、绿色和蓝色荧光粉发射光线产生颜色。绝大多数可视光谱都可表示为红、绿、蓝
(RGB)
三色光在不同比例和强度上的混合。这些颜色若发生重叠，则产生青、洋红和黄。

RGB灯分为共阳、共阴两种，下图展示的为共阴RGB灯。这个实验中我们用一个RGB灯，它是共阴极RGB模块。在这个实验中，我们把控制RGB红、绿、蓝三个颜色通道的信号端分别对应的接到了micro：bit主板的P4、
P3、
P2接口上，根据引脚说明，这3个引脚也是模拟输入信号端口。三个引脚分别为蓝、绿、红，这3个引脚可以只使用其中一个（只亮一种颜色），也可以同时使用（颜色组合）。在实验中，我们通过控制P4、
P3、
P2的模拟输入值，首先控制RGB灯显示红绿蓝三种颜色灯光，然后控制RGB灯快速变换颜色。通过控制R、G、B三个引脚的电压输入可以调节三种基色（红/蓝/绿）的强度，从而实现全彩的混色效果。

![](media/1631c696f3c539ed45a227c5f18afb01.jpg)

实验器材：

|![](media/ca29d1bc5c3eee0b3d971b39220c4d6d.png)|![](media/fa5b6b8e82566ea6828c90fc7dffd1bd.jpg)|![](media/b1c474df0a1f69e72f76bb7e7492e380.png)|![](media/04260641d0d7008c9bcd37f35112b546.jpg)|
|-|-|-|-|
|micro：bit主板×1|keyes micro bit 传感器V2扩展板|RGB×1|micro USB数据线×1|
|![](media/d45516e7148c96da4a618a4d5e6c283c.png)|![](media/b2f58386573c89f41a6f8fcab30de90e.png)|![](media/8386518faa484e3b1c57285c59764711.png)||
|220Ω 电阻×3|面包板×1|公对母杜邦若干||

实验原理图

![](media/8eab1d495bbd7e5040e0663af7181f3f.png)

实验接线图：

![](media/c2f6580bb84cc1bc658c3b7b496e6e71.png)

实验代码：

根据上图的接线图接好线，由实验接线图可知，RGB的RED引脚接在P4、GREEN引脚接在P3、BLUE引脚接在P2，先用micro USB数据线将电脑和micro：bit主板连接好，再启动micro:
bit在线编程工具进行编写代码。

寻找代码块

![](media/0d5ffe2e0da4e19704d7cbf6ec9552c6.png)![](media/3000ce93fc66b5595038586398876808.png)

![](media/2ed81702f987fa1507803352ea5fee62.png)![](media/9d86978533c1c3e5505edb59c39d3de2.png)

完整的代码程序：

![](media/1e1f1fa1c4da33b0717b60a73619a775.png)

![](media/ff339ba0de00bff6cd5c2ca21f708bb8.png)

①“当开机时”指令方块仅运行一次以启动程序。 
②关闭LED点阵屏。 
③设置P2的模拟值为1023。 
④设置P3的模拟值为1023。 
⑤设置P4的模拟值为1023。 
⑥在“无线循环”指令方块之内，程序循环运行。 
⑦设置P2的模拟值为0。 
⑧延时时间1000毫秒。 
⑨设置P2的模拟值为1023。 
⑩设置P3的模拟值为0。 
⑪延时时间1000毫秒。 
⑫设置P3的模拟值为1023。 
⑬设置P4的模拟值为0。 
⑭延时时间1000毫秒。 
⑮设置P4的模拟值为1023。 
⑯do中的程序重复1次。 
⑰变量index的值处于0-513之间，执行do中的程序。 
⑱设置P2的模拟值为index。 
⑲设置P3的模拟值为1023-index。 
⑳设置P4的模拟值为512-index。 
㉑延时时间1毫秒。 
㉒变量index的值处于0-513之间，执行do中的程序。 
㉓设置P2的模拟值为512-index。 
㉔设置P3的模拟值为index。 
㉕设置P4的模拟值为1023-index。 
㉖延时时间1毫秒。 
㉗变量index的值处于0-513之间，执行do中的程序。 
㉘设置P2的模拟值为1023-index。 
㉙设置P3的模拟值为512-index。 
㉚设置P4的模拟值为index。 
㉛延时时间1毫秒。 
㉜设置P2的模拟值为1023。 
㉝设置P3的模拟值为1023。 
㉞设置P4的模拟值为1023。

实验结果

按照接线图接好线，上传完程序，上电后，我们就可以看到RGB灯开始显示白色灯光，接着显示蓝、绿、红三种颜色灯光，然后RGB灯快速变换颜色，最后又显示白色灯光，循环交替。

![](media/edca9e2b00e63fed287d61765c225793.png)

拓展实验

要求RGB灯陆续显示蓝色0.5S，绿色0.5S，红色0.5S，黄色0.5S，紫色0.5S，白色0.5S，然后循环交替。

![](media/bf26c3dce286148e34412b6e6144051f.png)

![](media/2de1cf5b27b45155a28abdec6ba2e2a7.png)

#### 有源蜂鸣器

![](media/a91e7589949c77d15e8b7dd78ae326fe.jpg)

实验说明

我们可以用micro：bit制作许多互动作品，其中最常用的是声光显示。之前所有的实验都和LED有关。然而，这个实验中的电路可以产生声音。通常情况下，实验是用蜂鸣器或扬声器进行的，而蜂鸣器更简单、更容易使用。蜂鸣器的发声原理由振动装置和谐振装置组成，而蜂鸣器又可分为有源蜂鸣器和无源蜂鸣器两种。本课程中主要用到了有源蜂鸣器，有源蜂鸣器内部有一简单的振荡电路，能将恒定的直流电转化成一定频率的脉冲信号。实验中我们只需要给有源蜂鸣器输入一个高电平信号，蜂鸣器就响起。

三极管

三极管，全称应为[半导体三极管](https://baike.baidu.com/item/%E5%8D%8A%E5%AF%BC%E4%BD%93%E4%B8%89%E6%9E%81%E7%AE%A1/3517837)，也称[双极型晶体管](https://baike.baidu.com/item/%E5%8F%8C%E6%9E%81%E5%9E%8B%E6%99%B6%E4%BD%93%E7%AE%A1/5364185)、[晶体三极管](https://baike.baidu.com/item/%E6%99%B6%E4%BD%93%E4%B8%89%E6%9E%81%E7%AE%A1/9393790)，是一种控制电流的半导体器件。其作用是把微弱信号放大成幅度值较大的电信号，也用作无触点开关。

三极管是半导体基本元器件之一，具有电流放大作用，是电子电路的核心元件。三极管是在一块半导体基片上制作两个相距很近的PN结，两个PN结把整块半导体分成三部分，中间部分是基区，两侧部分是发射区和集电区，排列方式有PNP和NPN两种。

对于NPN三极管，它是由2块N型半导体中间夹着一块P型半导体所组成，发射区与基区之间形成的PN结称为发射结，而集电区与基区形成的PN结称为集电结，三条引线分别称为[发射极](https://baike.baidu.com/item/%E5%8F%91%E5%B0%84%E6%9E%81)E（Emitter）、[基极](https://baike.baidu.com/item/%E5%9F%BA%E6%9E%81)B (Base)和[集电极](https://baike.baidu.com/item/%E9%9B%86%E7%94%B5%E6%9E%81)C (Collector)。

![](media/3b69067ba3249b1d94d145ec2c1d0d91.jpg)

S8050三极管是一款小功率NPN型硅管，集电极-基极(Vcbo)电压最大可为40V，集电极电流为(Ic)0.5A。

S8050三极管字面朝向自己，[引脚](http://www.so.com/s?q=%E5%BC%95%E8%84%9A&ie=utf-8&src=internal_wenda_recommend_textn)朝下，[左边](http://www.so.com/s?q=%E5%B7%A6%E9%9D%A2&ie=utf-8&src=internal_wenda_recommend_textn)一脚是发射极（E极），[中间](http://www.so.com/s?q=%E4%B8%AD%E9%97%B4&ie=utf-8&src=internal_wenda_recommend_textn)一脚是基极（B极），[右边](http://www.so.com/s?q=%E5%8F%B3%E8%BE%B9&ie=utf-8&src=internal_wenda_recommend_textn)一脚是集电极（C极）

![](media/2ec79c7cefa32d19d19d2970311b054b.png)![](media/0410e539121da70fa4543b0bf3efc360.png)

我们常用的三极管分为两大类型：PNP型三极管和NPN型三极管，S8550为PNP型三极管，S8050为NPN型三极管，在我们的学习套件中提供的是S8050。

![](media/df48e7b8c3e1e98cd66a5582aa79ff29.png)
![](media/5642275b2be86782bd9563ee840b0d1a.png)

实验器材

|![](media/ca29d1bc5c3eee0b3d971b39220c4d6d.png)|![](media/fa5b6b8e82566ea6828c90fc7dffd1bd.jpg)|![](media/5ee7a61fcdcfb60641a3646bdb2c71d9.png)|![](media/1f75f6b443ad7d7f8050adc2ef3b2cb7.png)|![](media/8386518faa484e3b1c57285c59764711.png)|![](media/bcaf3275da78dc412506c7000045271e.png)|
|-|-|-|-|-|-|
|micro：bit主板×1|keyes micro bit 传感器V2扩展板|有源蜂鸣器×1|2.4KΩ 电阻×1|公对母杜邦若干|面包板连接线若干|
|![](media/6f69c5ad1e22848efa6bb27ec147444e.png)|![](media/a08c85c4c619b82b2319e608bc74ad01.png)|![](media/e20985bf8a60ca6aa80c9c5c07ae0684.jpg)|![](media/91ff6e019f8560e46ec051c2b04d9b06.png)|![](media/0e9767fbe06272b98c295ed74f03faef.png)||
|S8050三极管×1|面包板×1|micro USB数据线×1|18650电池×2|18650电池盒×1||

实验原理图：

![](media/2dbc2d90c1df254c4cb9c6ca748da87e.png)

实验接线图：

![](media/f9b9485564873d505f973b4eca2f9d2f.png)

实验代码：

根据上图的接线图接好线，由实验接线图可知，有源蜂鸣器接到P2处，先用micro USB数据线将电脑和micro：bit主板连接好，再启动micro:
bit在线编程工具进行编写代码。

寻找代码块

![](media/fb5f9435c68886057ff9263fffbc361d.png)![](media/856442fe62b9aafa983d6605abf9393a.png)

完整的代码程序：

![](media/2fa7f961f50744a31dc85f54c36ceddc.png)
①“当开机时”指令方块仅运行一次以启动程序。 
②关闭LED点阵屏。 
③在“无限循环”指令方块之内，程序循环运行。 
④设置P2为高电平（1），使有源蜂鸣器发出声音。 
⑤延时时间500毫秒。 
⑥设置P2为高电平（0），使无源蜂鸣器不发声。 
⑦延时时间500毫秒。

实验结果：

按照接线图接好线，上传完程序，利用电池盒上电后，我们可以听到有源蜂鸣器响0.5秒，停止响起0.5秒，循环交替。（注意：扩展板使用DC 7~9V的电源供电，V2跳帽插在5V的位置![](media/46fd5dcca9654221bc7066a721ecba88.png)，实验才能正常工作）

![](media/b6f59c990b932a59fe7f23e8ddec87a3.png)

拓展实验：

更换有源蜂鸣器所接的IO口，使接在IO口P0的有源蜂鸣器响0.2秒，停止响起0.2秒，循环交替。

![](media/570b0beba6dc36d6d6e7d7f65dd93fda.png)

#### 第7课 无源蜂鸣器

实验说明：

![](media/45524cb6b1e4c8d63968b1f50a7f26bf.jpg)我们可以用micro：bit制作许多互动作品，其中最常用的是声光显示。之前所有的实验都和LED有关。然而，这个实验中的电路可以产生声音。通常情况下，实验是用蜂鸣器或扬声器进行的，而蜂鸣器更简单、更容易使用。

我们这里介绍的蜂鸣器是无源蜂鸣器。它不能由自身驱动，而是由外部脉冲频率驱动。不同的频率产生不同的声音。我们可以使用micro：bit来编码歌曲的旋律，这实际上是非常有趣和简单的。

蜂鸣器可分为有源蜂鸣器和无源蜂鸣器两种。无源蜂鸣器利用电磁感应现象，为音圈接入交变电流后形成的电磁铁与永磁铁相吸或相斥而推动振膜发声，接入直流电只能持续推动振膜而无法产生声音，只能在接通或断开时产生声音。

无源蜂鸣器的工作原理与扬声器相同，在使用方波信号源驱动的应反向并联一个二极管，防止突然断电时产生的高压反向电动势击穿其他元件以及使用寿命缩短。
　　有源蜂鸣器往往比无源蜂鸣器的贵，就是因为里面多个震荡电路，只需接入额定电压的直流电即可发出指定频率的声音，频率由内部振荡电路决定，无法改变。而无源蜂鸣器内部不带振荡源，直流信号无法令其鸣叫，须用方波驱动。

无源蜂鸣器的优点是：
　　（1）制作成本低；
　　（2）声音频率范围宽，可高分贝的发出某些频率的超声波以及可以做出“多来米发索拉西”的效果；
　 （3）在一些特例中，可以和LED复用一个控制IO口。

无源蜂鸣器频率是由英文和数字组成的音名，选择不同的音名就能改变不同的频率啦。声音频率的高低叫做音调。在音乐课上，老师教过我们唱“1（Do）、2（Re）、3(Mi)、4(Fa) 、5(Sol) 、6(La) 、7(Si)”是音乐当中的唱名，就对应了音调中的C、D、E、F、G、A、B这些音名。

|1（Do）|2（Re）|3(Mi)|4(Fa)|5(Sol)|6(La)|7(Si)|
|-|-|-|-|-|-|-|
|C|D|E|F|G|A|B|

频率（音调）高低判断时先看后面的数字，数字越大，音调越高，数字相同时看前面的字母，从C到B频率（音调）越来越高；而节拍是音符延时时间，数值越大，延时时间越长。

节拍是指每个音符持续的时间。音谱中不带线的一个音符就是一拍，延时1000毫秒，而带一条下划线的音符节拍是不带线音符节拍的1/2，带两条下划线的音符节拍是不带线音符节拍的1/4（![](media/510bee020b128f82e46813b22e903ad1.png)）

在本实验中，使无源蜂鸣器演奏”欢乐颂“歌曲，下面是《欢乐颂》歌曲的简谱。

![](media/520ca96becfacacff4df2a4be81ddc73.jpg)

实验器材：

|![](media/ca29d1bc5c3eee0b3d971b39220c4d6d.png)|![](media/fa5b6b8e82566ea6828c90fc7dffd1bd.jpg)|![](media/29b7620eea2fe1d97903c6d555b9ba57.png)|![](media/4559c34b67ae86c0955f574f68857737.png)|![](media/bf34e831690ed477ea2f2998a0e0e348.jpg)|![](media/a279ff1f9b6fccdd6cd25fa982a5c868.png)|
|-|-|-|-|-|-|
|micro：bit主板×1|keyes micro bit 传感器V2扩展板|无源蜂鸣器×1|2.4KΩ电阻×1|51Ω电阻×1|面包板连接线若干|
|![](media/fafcb6686704ebe7a59f248b38db7699.png)|![](media/034df31c94a5fda83f4d81cb4f03b0e7.png)|![](media/8386518faa484e3b1c57285c59764711.png)|![](media/25213e86ad71f74fb7331389a46b99b5.jpg)|![](media/91ff6e019f8560e46ec051c2b04d9b06.png)|![](media/0e9767fbe06272b98c295ed74f03faef.png)|
|S8050三极管×1|面包板×1|公对母杜邦若干|micro USB数据线×1|18650电池×2|18650电池盒×1|

实验原理图：

（注意：在micro：bit主板中，无源蜂鸣器只能接在IO口P0处）

![](media/94732bc31ed4bcaa570e8a274439a15e.png)

实验接线图

![](media/b03ad24638905fd611ca7c3caf6470e7.png)

实验代码：

根据上图的接线图接好线，由实验接线图可知，无源蜂鸣器接到P0处，先用micro USB数据线将电脑和micro：bit主板连接好，再启动micro:
bit在线编程工具进行编写代码。

寻找代码块

![](media/39eee21bd05e84f3e3b90f4c1f3d3b95.png)![](media/d4bd8e27840194754a92730a88303f44.png)

完整的代码程序：

![](media/e9267f79d17aecf5930c34015b292d7e.png)
![](media/17a36cc31e355f4486410acb5212fcb3.png)
![](media/17925a798331e8e2b56f7591bd43d69d.png)
![](media/745f2972d473ed56c1f7ce95f51c9a74.png)

![](media/6c972699d86fe726d1c58e0a65bbecdf.png)
![](media/ff5c15393a9da8d9dcea27b0fe72014d.png)
![](media/997cbfca2b1eefc89514c0b6957869ea.png)
![](media/002ee6f90635452d4f800c27c983e100.png)

①“当开机时”指令方块仅运行一次以启动程序。 
②关闭LED点阵屏。
③在“无限循环”指令方块之内，程序循环运行 
④播放音调高E持续1节拍 
⑤播放音调高E持续1节拍 
⑥播放音调高F持续1节拍 
⑦播放音调高G持续1节拍 
⑧播放音调高G持续1节拍 
⑨播放音调高F持续1节拍 
⑩播放音调高E持续1节拍 
⑪播放音调高D持续1节拍 
⑫播放音调高D持续1节拍 
⑬播放音调高C持续1节拍 
⑭播放音调高D持续1节拍 
⑮播放音调高E持续1节拍 
⑯播放音调高E持续1节拍 
⑰播放音调高D持续1/2节拍 
⑱播放音调高D持续1节拍 
⑲播放音调高E持续1节拍 
⑳播放音调高E持续1节拍 
㉑播放音调高F持续1节拍 
㉒播放音调高G持续1节拍 
㉓播放音调高G持续1节拍 
㉔播放音调高F持续1节拍 
㉕播放音调高E持续1节拍
㉖播放音调高F持续1节拍
㉗播放音调高C持续1节拍 
㉘播放音调高C持续1节拍 
㉙播放音调高D持续1节拍 
㉚播放音调高E持续1节拍 
㉛播放音调高D持续1节拍 
㉜播放音调高C持续1/2节拍 
㉝播放音调高C持续1节拍 
㉞播放音调高D持续1节拍 
㉟播放音调高D持续1节拍 
㊱播放音调高E持续1节拍 
㊲播放音调高C持续1节拍 
㊳播放音调高D持续1节拍 
㊴播放音调高E持续1/2节拍
㊵播放音调高F持续1/2节拍
㊶播放音调高E持续1节拍 
㊷播放音调高C持续1节拍 
㊸播放音调高D持续1节拍 
㊹播放音调高E持续1/2节拍 
㊺播放音调高F持续1/2节拍 
㊻播放音调高E持续1节拍 
㊼播放音调高D持续1节拍 
㊽播放音调高C持续1节拍 
㊾播放音调高C持续1节拍
㊿播放音调中G持续1节拍
播放音调高E持续1节拍 
播放音调高E持续1节拍 
播放音调高E持续1节拍 
播放音调高F持续1节拍 
播放音调高G持续1节拍 
播放音调高G持续1节拍 
播放音调高F持续1节拍 
播放音调高E持续1节拍 
播放音调高D持续1节拍 
播放音调高C持续1节拍 
播放音调高C持续1节拍 
播放音调高D持续1节拍 
播放音调高E持续1节拍 
播放音调高D持续1节拍

实验结果：

按照接线图接好线，上传完程序，使用电池盒上电后，我们可以听到无源蜂鸣器循环演奏《欢乐颂》歌曲。（注意：扩展板使用DC 7~9V的电源供电，V2跳帽插在5V的位置![](media/46fd5dcca9654221bc7066a721ecba88.png)，实验才能正常工作）

![](media/3908e25b1c04e90102f8b08271191015.png)

拓展实验：

使无源蜂鸣器循环响起两种声音。

![](media/3b87530d9d5dfdc343d047095d728f86.png)

#### 第8课 1位数码管显示

实验说明

![](media/3093f728496e326682a15d5524ccf2fe.png)数码管是一种半导体发光器件，其基本单元是发光二极管。数码管按段数分为七段数码管和八段数码管，八段数码管比七段数码管多一个发光二极管单元（多一个小数点显示）。本实验所使用的是八段数码管，这类数码管可以分为共阳极与共阴极两种，共阳数码管就是把所有LED的阳极连接到共同接点COM，共阳数码管在应用时应将公共极COM接到+3V，当某一字段发光二极管的阴极为低电平时，相应字段就点亮，当某一字段的阴极为高电平时，相应字段就不亮。而每个LED的阴极分别为a、b、c、d、e、f、g及dp（小数点）；共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管，共阴数码管在应用时应将公共极COM接到地线GND上，当某一字段发光二极管的阳极为高电平时，相应字段就点亮，当某一字段的阳极为低电平时，相应字段就不亮。而每个LED的阳极分别为a、b、c、d、e、f、g及dp（小数点）。数码管共有七段显示数字的段，还有一个显示小数点的段。当让数码管显示数字时，只要将相应的段点亮即可。

这个实验中我们用了一个共阴极八段数码管，当由micro：bit控制时，它必须与电阻器连接，因此阳极端的每个引脚都应连接到220Ω电阻器。1位数码管有8个发光二极管（LED）对应的8个引脚，如

下图所示，发光二极管a相对于引脚a，发光二极管b相对于引脚b，以此类推。把引脚a接到micro bit主板的P13，引脚b接到P14，引脚c接到P8，引脚d接到P9，引脚e接到P10，引脚f接到P12，引脚g接到P11，引脚dp接到P7，只要控制对应接口的高低电平，即可控制数码管的显示。实验中，我们让数码管逐渐显示0-9的10个数字。

![](media/4e06d9eee5fbd91805643edf63ec8961.jpg)
![](media/78fec7b7e893725097958525e0c52562.png)

实验器材

|![](media/ca29d1bc5c3eee0b3d971b39220c4d6d.png)|![](media/fa5b6b8e82566ea6828c90fc7dffd1bd.jpg)|![](media/3328d055191afa2c7590efaebe72cf70.png)|![](media/d45516e7148c96da4a618a4d5e6c283c.png)|
|-|-|-|-|
|micro：bit主板×1|keyes micro bit 传感器V2扩展板|1位数码管×1|220Ω电阻×8|
|![](media/d45516e7148c96da4a618a4d5e6c283c.png)|![](media/b2f58386573c89f41a6f8fcab30de90e.png)|![](media/bcaf3275da78dc412506c7000045271e.png)|![](media/8386518faa484e3b1c57285c59764711.png)|
|220Ω电阻×8|面包板×1|面包板连接线若干|公对母杜邦若干|

实验原理图：

![](media/1baeb92b5658bde60020a269ac6ed41c.png)

实验接线图：

![](media/381626596183b0b86f6f68305573dc28.png)

实验代码：

根据上图的接线图接好线，先用micro USB数据线将电脑和micro：bit主板连接好，再启动micro:
bit在线编程工具进行编写代码。

寻找代码块

![](media/85988b57e6d83facf3dc80029493a89e.png)![](media/90cec5b4df85e0b1b5597425174da0fb.png)![](media/0bc0ff02b203fc0df04263cdc424b211.png)

完整程序

![](media/c329d34d9e4051d33e6fdcca9ade7611.png)

![](media/026f8fe9df7a861dc73bf624be8ee238.png)

程序说明

|![](media/6f16adaf617c935d8abd5eb7d45d1882.png)|关闭LED点阵屏|
|-|-|
|![](media/b7d6e3832d3faf93956802d95485527b.png)|子函数0并延时500mS|
|![](media/cdfd2cd00ac54387d3bba417885dac1e.png)|③子函数0 ④将P12设为高电平（1） ⑤将P13设为高电平（1） ⑥将P7设为高电平（1） ⑦将P8设为高电平（1） ⑧将P9设为高电平（1） ⑨将P14设为高电平（1） ⑩将P10设为低电平（0） (实现的功能是：数码管显示0。其它程序功能类似就不在做说明)|

实验结果：

按照接线图接好线，上传完程序，上电后，我们可以看到数码管循环显示0～9的10个数字。

#### 第十课 4位数码管模块显示

![](media/b6cc848143980886fbb44be414d7432e.jpg)

实验说明:

4位数码管模块是一个主要由12脚的带比分点的4位共阳数码管组成的显示模块，它的驱动芯片为TM1637，4位数码管模块是亮度可调带时钟点的。使用时，我们只需要2根信号线即可使单片机控制4位8数码管，大大节约了控制板IO口资源。该模块可以应用于时间显示、跑表显示及其他需要显示数字的设备上。模块的控制端接口为4pin
间距为2.54mm的排针，我们可以通过该排针将模块连接到对应的控制单片机上。

为了方面将模块固定在其他设备上，模块自带2个直径为3mm的定位孔。

在本实验中，我们将keyes 4位数码管模块通过面包板连接到keyes micro bit
扩展板上，通过micro：bit主板和编写程序来控制 4位数码管模块显示数字。

实验器材：

|![](media/ca29d1bc5c3eee0b3d971b39220c4d6d.png)|![](media/fa5b6b8e82566ea6828c90fc7dffd1bd.jpg)|![](media/6040345828d65bf3bfbbf8545242593f.png)|![](media/f9e39218123af55a5d791166ac0ff76d.png)|![](media/c7c44fd0073ac5af108ce818d66e4d08.jpg)|
|-|-|-|-|-|
|micro：bit主板×1|keyes micro bit T型扩展板×1|keyes 4位数码管模块×1|4P 转杜邦线母单|micro USB数据线×1|

接线图

![](media/d7186dd1c5e0e369d15c42ed4ee45bc4.png)

实验一

添加4位数码管模块的库文件，添加方法如下：

利用库文件设置代码，在下图模块添加库文件，点击“扩展”。

![](media/f386b9ac0994eb31d56fb1c6bfbc46a4.png)

输入TM1637并搜索，显示如下图，点击下载安装库文件。

![](media/5157e327f01f3576aaa7545c72d9a737.png)

4位数码管模块的库文件安装成功，然后在编辑代码栏目里看到对应模块。

![](media/84acb45998f96ec4220c3add1b66478f.png)

(2)寻找代码块

![](media/a51d3417eef6cb379a394d7f5ccda2ea.png)

![](media/00337dc5e91b6ac9d17492c374da3666.png)

(3)代码程序：

![](media/d55255337d293fcc0977472023f9040d.png)

(4)程序说明

![](media/f410806451ee2686f33275f47a616623.png)
①“当开机时”指令方块仅运行一次以启动程序。 
②将item设置为CLK P1 DIO P2 intensity 7 LED count 4。 
③在“无限循环”指令方块之内，程序循环运行 
④打开变量item 
⑤延时时间200毫秒 
⑥在4位数码管模块的第0位显示数字5 
⑦延时时间200毫秒 
⑧在4位数码管模块的第1位显示数字5 
⑨延时时间200毫秒 
⑩在4位数码管模块的第2位显示数字5 
⑪延时时间200毫秒 
⑫在4位数码管模块的第3位显示数字5 
⑬延时时间200毫秒 
⑭关闭变量item
⑮延时时间200毫秒

(5)实验现象

如上接好线，上传好程序，我们可以看到4位数码管模块显示字符串“55：55”；

扩展实验

![](media/e06c0210e3abe59b630ab3e5be733a7d.png)

(2)实验现象

上传程序，上电后，我们可以看到4位数码管模块显示字符串“13：14”，并且中间两点不停地闪烁。

#### 第10课 8\*8点阵显示

实验说明：

点阵在我们生活中很常见，很多都有用到他，比如LED广告显示屏，电梯显示楼层，公交车报站等等。

8\*8点阵共由64个发光二极管组成，且每个发光二极管是放置在行线和列线的交叉点上，当对应的某一行置高电平，某一列置低电平，则相应的二极管就亮；如要将第一个点点亮，则7脚接高电平A脚接低电平，则第一个点就亮了；如果要将第一行点亮，则第7脚要接高电平，而A、B、C、D、E、F、G、H这些引脚接低电平，那么第一行就会点亮；如要将第一列点亮，则第A脚接低电平，而0、1、2、3、4、5、6、7接高电平，那么第一列就会点亮。

在本课程中，我们只是让点阵输出一个数字“11”。

8\*8点阵原理图：

![](media/52e76f32437c2e9d113eb9129ee0a7f4.png)

8\*8点阵实物图：

![](media/04cb3f267ea3c5d85a8fc595a44a754c.jpg)

实验器材：

|![](media/9887476b111f5de41a6b4e979955078f.png)|![](media/15cb6f3629e560bea81693cbe588ef0d.jpg)|![](media/944cb63bc57db83bcaa1238eca034b96.png)|![](media/8386518faa484e3b1c57285c59764711.png)|
|-|-|-|-|
|micro：bit主板×1|keyes micro bit 传感器V2扩展板|8*8点阵屏×1|公对母杜邦若干|
|![](media/372d07e360ed3bc879cebc8365f8e0fc.png)|![](media/b2f58386573c89f41a6f8fcab30de90e.png)|![](media/bcaf3275da78dc412506c7000045271e.png)|![](media/38b99fc2c777c5ab25c9013e932ece44.jpg)|
|220Ω电阻×8|面包板×1|面包板连接线若干|micro USB数据线×1|

实验原理图：

![](media/028ffefd5df332a6bcb39bc571108515.png)

实验接线图：

![](media/59c7fb705248e127335b423319691db6.png)

实验代码：

完整的代码程序：

![](media/3eef80ec16df4086f2837b92e941c970.png)

①“当开机时”指令方块仅运行一次以启动程序。 
②关闭LED点阵屏。 
③在“无限循环”指令方块之内，程序循环运行。
④将P16设置低电平（0） 
⑤将P14设置低电平（0） 
⑥将P3设置高电平（1） 
⑦将P6设置高电平（1） 
⑧将P1设置高电平（1） 
⑨将P7设置高电平（1） 
⑩将P9设置高电平（1） 
⑪将P0设置高电平（1） 
⑫将P13设置高电平（1） 
⑬将P8设置高电平（1）

实验结果：

按照接线图接好线，上传完程序，使用电池盒上电后，我们可以看到8\*8点阵屏显示数字“11”。

拓展实验：

更改上面的代码，上传完程序，使用电池盒上电后，使8\*8点阵屏显示文字“二”。

![](media/4ab2b648ce74f7ac4fdeb285b0eef2df.png)

#### 第11课 自制小台灯

实验说明

![](media/9cc827523996d2b0f7612f8119867099.png)在设计电路时，按键开关是最常用的一种元件。在上面实验四中，我们已经讲解了有关按键开关的工作原理。尽管micro：bit主板上自带了三个按键，其中2个可编程按键和1个复位按键，但是有时设计电路还是需要用到外接按键。在本实验中，我们只是利用一个外接按键控制一个外接的LED的亮和灭。

实验器材：

|![](media/742947bca3a40faf59f0a2e1ea6515ed.png)|![](media/09fe1a8f1ac9fc4349fb0a78a8d677ea.jpg)|![](media/f64b25ea6b4c107d0b482fb94f68c9f6.png)|![](media/bf80655fdf49f5a8a058abab782b2e3f.png)|![](media/2791c81f04feb75f637872c6024e4d12.png)|
|-|-|-|-|-|
|micro：bit主板×1|keyes micro bit 传感器V2扩展板|按键×1|红色LED×1|10KΩ电阻×1|
|![](media/fe01347bf773afb3a7009bf696f54135.png)|![](media/195aa097512cb6f3d535c60046d7d260.png)|![](media/3050ab948dfcad2c2be4b617eed24a00.png)|![](media/28feb3ae48d280f16b1b309007f69230.jpg)|![](media/24e2b42fd9706305d00da9337334c6ab.png)|
|220Ω电阻×1|面包板×1|公对母杜邦若干|micro USB数据线1|按键帽×1|

实验原理图：

![](media/1b3ae2f961813218bf970031c0cd853f.png)

实验接线图：

![](media/d5232502e5c2ee7f3b1d230300ab1c48.png)

实验程序：

程序1：

寻找代码块

![](media/5e77c12a92022ba9ea7707d0e3da39e9.png)![](media/ac2830848f565cdc5122333d9036c014.png)

![](media/98f48741a060fbcfe87e060bcdbc8296.png)

完整的程序程序：

![](media/0129ddf8b35126f8349df51772cbd78b.png)
①“当开机时”指令方块仅运行一次以启动程序。 ②清空屏幕。 ③在“无限循环”指令方块之内，程序循环运行。 ④LED点阵屏显示数字引脚P0读取的数字信号（1/0） ⑤延时时间100毫秒 ⑥串行写入digital signal=P0读取的数字信号（1/0）

按照上图接好线，上传好程序，上电后，打开CoolTerm，点击Options，选择SerialPort，设置COM口和波特率，波特率设置为115200（经过测试，micro:bit的USB串口通讯波特率是115200），点击OK后，最后点击Connect。当按下按键时，按键发送的是数字信号1，串口监视器显示的是1，同时micro：bit主板上LED点阵显示数字1；当未按下按键时，按键发送的是数字信号0，串口监视器显示的是0，同时micro：bit主板上LED点阵显示数字0。

![](media/e7703bb10f45bac4033ab44958dcb248.png)

程序2：

![](media/1d55891b392e5194b25c29996e6415f0.png)
①“当开机时”指令方块仅运行一次以启动程序。 ②关闭LED点阵屏。 ③将变量PushCounter设为0 ④将变量State设为0 ⑤将变量 Laststate设为0 ⑥在“无限循环”指令方块之内，程序循环运行 ⑦串行写入“x”=PushCounter的数值 ⑧将变量State设为P0读取的数字信号（1/0）。 ⑨当State≠Laststate成立，则执行then下的程序。 ⑩当State=1成立，则执行then下的程序。 ⑪将变量PushCounter设为PushCounter+1 ⑫延时时间100毫秒 ⑬将变量Laststate设为State ⑭当PushCounter÷2的余数=0成立，则执行then下的程序。 ⑮将P2设置为低电平（0），红色LED熄灭。 ⑯当PushCounter÷2的余数=0不成立，则执行else下的程序。 ⑰将P2设置为高电平（1），红色LED点亮

实验结果

按照接线图接好线，上传完程序，上电后，按下外接按键，外接LED亮起，再按下外接按键，外接LED熄灭。如此循环。

![](media/ce703920d1d04fd540b17dd9ac6e414e.png)

#### 第12课 自制人体红外报警器

实验说明：

![](media/32e1809d13ac83f403f44ec8ecf67cfe.png)我们在影视剧中看过这样的镜头，有人去偷袭一个目标时，还没有靠近目标，就直接被发现，而警报响起。有些特种兵去偷袭目标时，会再全身涂满湿润的泥巴，这样就不会给对方发现了，那这是为什么呢？

原来普通人体会发射10um左右的特定波长红外线，被偷袭的目标附近都安装了相关传感器能够感应到人体发射的红外线，然后报警，涂满泥巴后，传感器就感应不到人体发射的红外线了。

在这里，我们用keyes
人体红外传感器来检测附近是否有人运动，假如附近有人运动时，传感器信号端输出高电平1，否则输出低电平0。特别注意，这个传感器只能检测在运动中的人体，静止中的人体检测不到，检测距离最远为3米。

实验中，我们将keyes 人体红外传感器通过面包板连接到keyes micro bit
传感器V2扩展板上，观察信号变化，然后keyes人体红外传感器控制有源蜂鸣器。

实验器材：

|![](media/742947bca3a40faf59f0a2e1ea6515ed.png)|![](media/09fe1a8f1ac9fc4349fb0a78a8d677ea.jpg)|![](media/5ee7a61fcdcfb60641a3646bdb2c71d9.png)|![](media/1f75f6b443ad7d7f8050adc2ef3b2cb7.png)|
|-|-|-|-|
|micro：bit主板×1|keyes micro bit 传感器V2扩展板|有源蜂鸣器×1|2.4KΩ电阻×1|
|![](media/45f08f37456e451a7c615b6c7f3d5573.png)|![](media/34c4fe4e1ef853e25bef61b11f4b9397.png)|![](media/00c8e284e1ceb0cdeaaf827c21cd7c80.jpg)|![](media/195aa097512cb6f3d535c60046d7d260.png)|
|keyes人体红外传感器模块×1|面包板连接线若干|micro USB数据线×1|面包板×1|
|![](media/636578ba2140bf9c5bc563375ace4c9d.png)|![](media/7ba5be8f7cb9ae65860c18941055a14f.png)|![](media/41329132f255e8ba42e6b4c242edc63b.png)|![](media/5fbe312bb2116e1490f7fc0655088e8b.png)|
|3Pin+杜邦母单线|18650电池盒×1|S8050三极管×1|面包板连接线若干|

实验原理图：

![](media/ca5cefc99cecfc639406f1c2b3ae70ad.png)

实验接线图：

![](media/7f8b4a55ceec5e06a11fcc42b327b278.png)

实验代码：

寻找代码块

![](media/0a0bdb0b96d99c69d024c499b61beeaf.png)![](media/804a5586ea7ff5862d922ccbf8afef86.png)

完整的代码程序：

![](media/dd8a8bb3d46a99172c51f67b9602b171.png)
①“当开机时”指令方块仅运行一次以启动程序。 
②清空屏幕。 
③在“无限循环”指令方块之内，程序循环运行 
④当P1读取的数字信号=1成立时，执行then下的程序 
⑤将P2设置为高电平（1），有源蜂鸣器发出声音。 
⑥LED点阵显示“❤”图案。 
⑦当P1读取的数字信号=1不成立时，执行else下的程序 
⑧将P2设置为低电平（0），有源蜂鸣器不发出声音。 
⑨LED点阵显示“![](media/4905cb94aa680a373444421d17310858.png)”图案

实验结果：

按照接线图接好线，上传完程序， 利用micro USB线上电后，传感器感应到附近有人运动时，有源蜂鸣器响起，同时micro：bit主板上LED点阵显示![](media/8467b05cad237556c6eeb8ddb38ea348.png)图案；否则有源蜂鸣器不响，显示![](media/d87103e4d714341caa4fa688503db04b.png)
图案。（注意：扩展板使用DC 7~9V的电源供电，V2跳帽插在5V的位置![](media/46fd5dcca9654221bc7066a721ecba88.png)，实验才能正常工作）

拓展实验：

使传感器感应到附近有人运动时，micro：bit主板上LED点阵循环显示图案![](media/8467b05cad237556c6eeb8ddb38ea348.png)和![](media/c1b13aeb623f69a9d5456eabe01a5db4.png)；否则显示图案![](media/3efdab14447cbeba80e78b55910d242c.png)。

![](media/3f94669cbfbee68c3055e3fddec5dde2.png)

#### 第13课 自制火焰报警

实验说明：

![](media/eebe8036f3067b4133f9ccaaa7d8d22a.jpg)在生活中，我们发现有很多地方出现火灾，没有及时救火，导致火势愈演愈烈，最终造成重大损失。那么有没有办法避免这种情况呢？有，就是在容易着火的地方安装火焰传感器和喇叭，当火焰传感器检测到附近着火时，喇叭及时发出声音报警，提醒人们及时救火；甚至还可以直接和灭火器连接，在提醒人们救火的同时，自动控制灭火器灭火。

火焰传感器是机器人专门用来搜寻火源的传感器，本传感器对火焰特别灵敏。火焰传感器利用红外线对火焰非常敏感的特点，使用特制的红外线接收管来检测火焰，然后把火焰的亮度转化为高低变化的电平信号。

实验中，在这里我们用一个火焰传感器和有源蜂鸣器模拟自动报警系统。当火焰传感器检测到火焰时，火焰的亮度转化为高低变化的电平信号输入到micro bit主板中，然后控制无源蜂鸣器响起报警。

注意：火焰传感器可以检测火焰或者波长在760纳米～1100纳米范围内的光源，它的探测角度为60度左右。

实验器材：

|![](media/bf218e3e810372df93889534f92e6bee.png)|![](media/09fe1a8f1ac9fc4349fb0a78a8d677ea.jpg)|![](media/29b7620eea2fe1d97903c6d555b9ba57.png)|![](media/949d3b2443d445b87b7a0a27f868b2a2.png)|![](media/042e5982d535f5f469f037f811d96316.png)|![](media/0950008b1dba3d4eeb1175573f0f722a.jpg)|
|-|-|-|-|-|-|
|micro：bit主板×1|keyes micro bit 传感器V2扩展板|无源蜂鸣器×1|火焰传感器|2.4KΩ电阻×1|51Ω电阻×1|
|![](media/d86def02427917842d3da7d6c20dfe7c.png)|![](media/d488fffa51e565527a7a42850d8f58ec.png)|![](media/1d6410f37e31c7c12968bbe10131c076.png)|![](media/5ddd53d021b421fcbebd2a232e1deb1b.png)|![](media/d45516e7148c96da4a618a4d5e6c283c.png)|![](media/8231bc2e7a99cc541dffa05402d3038d.png)|
|面包板连接线若干|面包板×1|S8050三极管×1|红色LED×1|220Ω电阻×1|10KΩ电阻×1|
|![](media/ab503b0337833a7ca69ea2a8ad150161.jpg)||||||
|micro USB数据线×1||||||

实验原理图：

![](media/2ad17ddd02b86b94e1ddb29910257dda.png)

实验接线图：

火焰传感器的短引脚端为负极，长引脚端为正极。按照下图将负极插到面包板的正极（+）插口中，然后将正极与10K电阻相连，电阻的另一端插到面包板的负极（-）插口中，最后从火焰传感器的正极端所在列插入一根跳线，跳线的另一端插在数字口中。如图：

![](media/d954b17f4c62578dd6493308fea31c4e.png)

实验代码：

代码1：

![](media/2b69af190c7a2458277c5e83dc0ccaa4.png)
①“当开机时”指令方块仅运行一次以启动程序。 
②清空屏幕。 
③在“无限循环”指令方块之内，程序循环运行。 
④LED点阵屏显示数字引脚P2读取的数字信号（1/0） 
⑤延时时间500毫秒 
⑥串行写入digital signal=P2读取的数字信号（1/0）

按照接线图接好线，上传程序，上电后。打开CoolTerm，点击Options，选择SerialPort，设置COM口和波特率，波特率设置为115200（经过测试，micro:bit的USB串口通讯波特率是115200），点击OK后，最后点击Connect。当火焰传感器火焰传感器检测到火焰时，火焰传感器输出高电平，串口监视器显示的是1，同时micro：bit主板上LED点阵显示数字1；否则火焰传感器输出低电平，串口监视器显示的是0，同时micro：bit主板上LED点阵显示数字0。

![](media/dd7c195cd5e2f30c095ccfbb46bd280c.png)

代码2：

![](media/b9c01b7eb5b27f2460e34c964f6f908e.png)
①“当开机时”指令方块仅运行一次以启动程序。 
②清空屏幕。 
③在“无限循环”指令方块之内，程序循环运行 
④当P2读取的数字信号=1成立时，执行then下的程序 
⑤LED点阵显示“![](media/88ba75d49842b1954ba698144998963d.png)”图案。 
⑥播放音调高C持续1/4拍 .
⑦将P1设置为高电平（1），红色LED点亮。 .
⑧延时时间100毫秒 .
⑨将P1设置为低电平（0），红色LED熄灭。 .
⑩延时时间100毫秒 
⑪当P2读取的数字信号=1不成立时，执行else下的程序 
⑫将P0设置为低电平（0）,无源蜂鸣器不发出声音。 
⑬将P1设置为低电平（0），红色LED熄灭。 
⑭LED点阵显示“![](media/214004b6a0dbbb45475899bc86854663.png)”图案

实验结果：

按照接线图接好线，上传完程序，用电池供电后，当火焰传感器检测到附近有火焰时，micro：bit主板上LED点阵显示![](media/90d7097c6f53771898a5d7ceb8a98252.png)图案，同时无源蜂鸣器响起，红色LED闪烁；否则显示![](media/23d96d60bc7ebf106f9fffa3796a37bf.png)图案，无源蜂鸣器不响，红色LED不亮。（注意：扩展板使用DC 7~9V的电源供电，V2跳帽插在5V的位置![](media/46fd5dcca9654221bc7066a721ecba88.png)，实验才能正常工作）

![](media/496e722cae74831fee8b56a249c45cb4.png)

#### 第14课 倾斜感应开关实验

实验说明：

![](media/f19daa08b9792ab37a446e28c323cb5d.jpg)在这个套件中，有2个倾斜开关，它主要采用SW-200D
振动开关元件。

SW-200D
振动开关元件是滚珠型倾斜感应单方向性触发开关。该振动开关两端一端有两根金属脚，一端镀银；两根金属脚端为触发端，镀银端为导电端。当倾斜开关向触发端（两根金属脚）倾斜时，开关元件为闭路ON状态，倾斜开关输出高电平；
当倾斜开关在水平位置或向导电端（镀银）倾斜时，开关元件为开路OFF状态，倾斜开关输出低电平。

实验中，我们把倾斜开关通过面包板连接到keyes micro bit
扩展板上，通过读取倾斜开关高低电平，判断倾斜开关的方向，并且我们在串口监视器上显示实验结果的同时观察两个LED亮的情况。

在你做电路设计时，有时候你需要测试一个物体是否左右倾斜，这样你就可以用到倾斜开关。它主要是利用滚珠在开关内随不同倾斜角度的发化，达到触发电路的目的。

在这个实验中，左右倾斜倾斜开关，从而通过micro：bit主板控制两个LED亮的情况。

实验器材：

|![](media/bf218e3e810372df93889534f92e6bee.png)|![](media/09fe1a8f1ac9fc4349fb0a78a8d677ea.jpg)|![](media/4a4ec83eb2a35938cdcfef57811cf1f0.png)|![](media/955cc63ea0be63b1e104b77c1b054595.png)|![](media/79dab09d9b7cd50f198038efb727c0da.jpg)|
|-|-|-|-|-|
|micro：bit主板×1|keyes micro bit 传感器V2扩展板|面包板×1|红色LED×2|倾斜开关×2|
|![](media/11787e4ab7ef774c74b99af1b09f80bc.png)|![](media/d45516e7148c96da4a618a4d5e6c283c.png)|![](media/385ea2840226f41291fa90e739853563.jpg)|![](media/8231bc2e7a99cc541dffa05402d3038d.png)|![](media/e78dcf9aaa2c6808f5dd3e66e57b9fac.png)|
|面包板连接线若干|220Ω电阻×2|micro USB数据线×1|10KΩ电阻×2|面包板连接线若干|

实验原理图：

![](media/5ab56d29cbf5ba72813e64a4232a8964.png)

实验接线图：

![](media/3c8ae862d44146aacfb1a371b4e4d80f.png)

实验代码：

代码1

![](media/1d8307a7b6c9d60ed65556ecc90041e3.png)
①“当开机时”指令方块仅运行一次以启动程序。 
②关闭LED点阵屏。 
③在“无限循环”指令方块之内，程序循环运行 
④串行写入digital signal=P3读取的数字信号（1/0） 
⑤延时时间300毫秒

按照接线图接好线，上传程序，上电后。打开CoolTerm，点击Options，选择SerialPort，设置COM口和波特率，波特率设置为115200（经过测试，micro:bit的USB串口通讯波特率是115200），点击OK后，最后点击Connect。当倾斜开关向触发端（两根金属脚）倾斜时，串口监视器显示数字信号1；当倾斜开关在水平位置或向导电端（镀银）倾斜时，串口监视器显示数字信号0。如下图：

![](media/55ac6466fb7734a7c44e142263a2e9c3.png)

代码2：

根据上图的接线图接好线，由实验接线图可知，两个倾斜开关分别是接在P0和P2处，两个红色LED分别是接在P8和P9处，先用micro USB数据线将电脑和micro：bit主板连接好，再启动micro:
bit在线编程工具进行编写代码：

完整的代码程序：

![](media/5e84541293726b55c7099db400d875e2.png)
①“当开机时”指令方块仅运行一次以启动程序。 
②关闭LED点阵屏。 
③在“无限循环”指令方块之内，程序循环运行 
④当P0读取的数字信号=1且brightness1≠1023成立时，执行then下的程序。 
⑤将变量brightness1设置为brightness1+1 
⑥将P8的模拟值设置为brightness1 
⑦延时时间5微秒 
⑧当P0读取的数字信号=0且brightness1≠0成立时，执行then下的程序。 
⑨将变量brightness1设置为brightness1-1 
⑩将P8的模拟值设置为brightness1 
⑪延时时间5微秒 
⑫当P3读取的数字信号=1且brightness2≠0成立时，执行then下的程序。 
⑬将变量brightness2设置为brightness2-1 
⑭将P9的模拟值设置为brightness2 
⑮延时时间10微秒 
⑯当P3读取的数字信号=0且brightness2≠1023成立时，执行then下的程序。 
⑰将变量brightness2设置为brightness2+1 
⑱将P9的模拟值设置为brightness2 
⑲延时时间10微秒

实验结果：

按照接线图接好线，上传完程序，上电后，将两个倾斜开关同时倾斜一边，
一个LED逐渐变暗，同时另一个逐渐变亮，最终一个LED完全熄灭，一个LED最亮。

拓展实验：

![](media/9cab2b7843a9757090339b45a34a162f.png)

两个倾斜开关同时控制2个LED灯的亮灭，当两个倾斜开关都不倾斜时，
一个LED变亮，同时另一个LED不亮，当两个倾斜开关都倾斜时，亮的LED灯熄灭，不亮的LED灯点亮。

#### 第15课 自制小夜灯

实验说明：

![](media/054647a40aa280eeab9682f2aabc36d8.png)在生活中我们发现，很多公共场所的照明灯，一到晚上它就自动亮起来，一到白天它就自动熄灭，
难道这些灯都是有人去控制吗？实际上不是，实际上很多照明灯都是安装了一个感光元件，可以测量外界光的亮度，当到晚上时，亮度低了，就自动控制路灯亮起；当到白天时，亮度高了，就自动控制路灯熄灭。

这个感光元件实际上就是光敏电阻器，是利用半导体的光电效应制成的一种电阻值随光照的强弱而改变的电阻器，光敏电阻对环境光线是非常敏感的，在不同的光照强度下，光敏电阻的阻值是不一样的。我们利用光敏电阻器该特性，设计电路，生成光敏电阻传感器模块。光敏电阻器单片机的模拟口，当光照强度增强时，电阻减小，模拟口电压增大，即单片机的模拟值也变大；反之，光照强度减弱时，电阻增大，模拟口电压减小，即单片机的模拟值变小。这样，我们就可以利用光敏电阻器读取对应模拟值，感应环境中光照强度了。

光敏电阻器一般用于光的测量、光的控制和光电转换（将光的变化转换为电的变化）。光敏电阻器可广泛应用于各种光控电路，如对灯光的控制、调节等场合，也可用于光控开关。

在这里，我们将光敏电阻器接到装有keyes micro bit
扩展板的面包板上来测试外界光的亮度。我们需要用到micro：bit主板的模拟输入功能，只有几个特定的IO口才有该功能，具体的可以参考micro:bit
引脚说明。实验中光敏电阻器信号端接的是P2端，将所测结果在micro：bit主板上LED点阵或串口监视器上显示。

实验器材： 

|![](media/1afad67218b18e282facaa116d7db6f4.png)|![](media/4146163f089c50ed3c35849a8a493b4d.jpg)|![](media/52360545a73d9d3bce489e74924b598d.png)|![](media/6ded325b684d7ce7ad4dc8667e55faf4.png)|![](media/49308eee993850aefa94b77987a1bbfd.png)|
|-|-|-|-|-|
|micro：bit主板1|面包板×1|红色LED×1|220Ω电阻×1|光敏电阻×1|
|![](media/3f9f0cdca933fdcf30370abe70bff2f0.png)|![](media/c53059c29050b6fd9b35b88a0321b73f.png)|![](media/05c83d4e49b9a4ace81fe2d918fe6a9b.jpg)|![](media/07b2063a0f51a05b1a52cda94d2e6d56.png)|![](media/afa6edd3ff90b027a6f43995a6fb15a2.png)|
|面包板连接线若干|10KΩ电阻×1|micro USB数据线×1|面包板连接线若干|红色LED×2|

实验原理图：

![](media/d7830d0db91754c59276b3abefad7b68.png)

实验接线图：

![](media/b3ebcc108f02dd5378ca88dccc268cda.png)

实验代码：

玩过Arduino的朋友都知道，有数字口（D口）和模拟口（A口），分的非常清楚。在micro:bit主板中，我们通过引脚说明图也能看清哪几个引脚是支持模拟量读取的。我们看下图：

![](media/927227867c766f793d49aa421b1722d2.png)

这个实验中我们先用一个光敏电阻器测量P2的模拟量，改变外界光照强度时，模拟量发生变化，并在串口监视器中显示出来，实验中我们要用到一个串口通讯软件，这里我们用的是CoolTerm。然后再用光敏电阻器来控制红色LED的亮灭。

代码1：

![](media/1c80e4a01403eeca0009fe63cdc6db5c.png)
①“当开机时”指令方块仅运行一次以启动程序。 
②关闭LED点阵屏。 
③在“无限循环”指令方块之内，程序循环运行 
④串行写入analog signal=P2读取的模拟信号 ⑤延时时间200毫秒

按照上图接好线，上传好代码，利用micro USB线上电后，打开CoolTerm，点击Options，选择SerialPort，设置COM口和波特率，波特率设置为115200（经过测试，micro:bit的USB串口通讯波特率是115200），点击OK后，最后点击Connect。串口监视器显示对应数值，随着外界光照强度逐渐减弱，模拟数值在逐渐增大；反之，模拟数值在逐渐减少。如下图：

![](media/8c171307244fb86b2184ea235be3802e.png)

代码2：（注意：这里可以根据自己的测试结果任意设置模拟值取值范围）

![](media/8e32ad389c360cfad90cb034baa00483.png)
①“当开机时”指令方块仅运行一次以启动程序。 
②关闭LED点阵屏。 
③在“无限循环”指令方块之内，程序循环运行 
④当P2读取的模拟信号>400成立时，执行then下的程序 
⑤将P1设置为高电平（1），点亮红色LED。 
⑥当P2读取的模拟信号>400不成立时，执行else下的程序 
⑦将P1设置为低电平（0），熄灭红色LED。

实验结果：

按照接线图接好线，上传完程序，利用micro USB线上电后，当光敏电阻器感应到外界光照强度在减弱，其输入的模拟值大于等于400时，
LED灯点亮；反之，LED灯熄灭。

![](media/30f4db5fc6ef1791edea716477c57a1f.png)

#### 第16课 DIY声控灯

实验说明：

![](media/72e3d9f4f2d9adcb4cdfb066cc6f697a.jpg)在生活中，当我们晚上经过楼道时，如果脚步很轻，黑漆漆一片，而当我们加重脚步，或者大叫一声，楼

道里的照明灯就会陆续亮起。实际上楼道里的照明电路里安装有声音传感器，当检测到外界声音时，控制开启照明灯，否则关闭照明灯。

声音传感器主要采用一个高感度麦克风元件和LM386芯片。高感度麦克风元件用于检测外界的声音。利用LM386芯片搭建合适的电路，对高感度麦克风检测到的声音进行放大，最大倍数为200倍。使用时我们可以通过旋转传感器上电位器，调节声音的放大倍数。调节时，顺时针调节电位器到尽头，放大倍数最大。可以用来实现根据声音大小进行互动的效果制作声控机器人、声控开关、声控报警等。

在这实验中，我们将
声音传感器的信号端接到micro：bit主板的P0，通过读取P0端的模拟值，来检测外界的声音大小。检测时，外界声音越大，模拟值越大；外界声音越小，模拟值越小。并且，我们将所测的模拟值串口监视器上显示。同时，声音传感器控制LED的亮灭。

实验器材：

|![](media/1afad67218b18e282facaa116d7db6f4.png)|![](media/4146163f089c50ed3c35849a8a493b4d.jpg)|![](media/fee2c03411502974d5e4439e9c9d681c.png)|![](media/50f9e86405d0fec60f5959b9e1e7797a.png)|![](media/d45516e7148c96da4a618a4d5e6c283c.png)|![](media/91ff6e019f8560e46ec051c2b04d9b06.png)|
|-|-|-|-|-|-|
|micro：bit主板1|扩展板×1|声音传感器模块×1|红色LED×1|220Ω电阻×1|18650电池×2|
|![](media/b945a4002a6c468f6dc5d8bd50ba8ca6.png)|![](media/52bcd6aec2cf2572d4d6f9d8566801fb.png)|![](media/b5e21a18656f9350cf052ace5b528623.jpg)|![](media/90bf5ac3f0673141d41408d20c722034.png)|![](media/0e9767fbe06272b98c295ed74f03faef.png)||
|面包板×1|面包板连接线若干|micro USB数据线×1|3P连接线×1|18650电池盒×1||

实验原理图：

![](media/8d885b9fa96b90cb2b68568ddeca7c2d.png)

实验接线图：

![](media/7288185ebdb23c259eba5c8e052dd70d.png)

实验代码：

代码1：

根据上图的接线图接好线，由实验接线图可知，声音传感器模块的信号端S是接在P0处，先用micro USB数据线将电脑和micro：bit主板连接好，再启动micro:
bit在线编程工具进行编写代码。

完整的代码程序：

![](media/0b1a4cd4bf326f0db3e77d36b85360c3.png)
①“当开机时”指令方块仅运行一次以启动程序。 
②关闭LED点阵屏。 
③在“无限循环”指令方块之内，程序循环运行 
④串行写入Sound analog value=P0读取的模拟信号 ⑤延时时间100毫秒

按照接线图接好线，上传程序，;上电后。打开CoolTerm，点击Options，选择SerialPort，设置COM口和波特率，波特率设置为115200（经过测试，micro:bit的USB串口通讯波特率是115200），点击OK后，最后点击Connect。改变外界环境中的声音大小，利用串口监视器可以看到显示结果，显示如下图。

![](media/3439735b801e82273fb84e52152ae8d1.png)

代码2：

完整的代码程序：

![](media/044e36f39c50bd2b28f40d3e4792f54c.png)
①“当开机时”指令方块仅运行一次以启动程序。 
②关闭LED点阵屏。 
③在“无限循环”指令方块之内，程序循环运行 
④当P0读取的模拟信号>100成立时，执行then下的程序 ⑤将P2设置为高电平（1），点亮红色LED。 
⑥延时时间1000毫秒 
⑦当P0读取的模拟信号>100不成立时，执行else下的程序 
⑧将P2设置为低电平（0），熄灭红色LED

实验结果：

按照接线图接好线，上传程序，上电后，我们可以看到当外界环境中的声音强度模拟值大于100时，LED灯点亮1s；否则，LED灯熄灭。

![](media/fbf5f625874b01384a4536c7e6e7e0e4.png)

拓展实验：

![](media/6c3799aae8d6700dad74893c21ec8e87.png)

当外界环境中的声音强度模拟值大于150时，LED灯点亮5s，同时microbit
主板的5\*5点阵显示图案![](media/22d79d5378f8336f38ebe6182ebc652b.png)；否则，LED灯熄灭，同时microbit
主板的5\*5点阵显示图案![](media/6280c9181e5a31ac56cacc95128c1b71.png)。

#### 第17课 自制调光灯

![](media/f71165ab140ae6b2aac093dc75785c96.jpg)

实验说明：

当我们在做DIY实验时，我们经常要用到可调电位器，它也是一个10K可调电阻，当我们在旋转电位器时，实际上就是改变可调电位器的电阻。我们设置对应电路，将电阻阻值的变化，转换成电压的变化。然后将电压变化通过模块信号端输入到micro：bit主板的模拟输入口检测。所以在在这实验中，我们将可调电位器的信号端接到micro：bit主板的P0，通过读取P0端的模拟值，旋转电位器，模拟值数据改变，我们将所测的模拟值在CoolTerm串口监视器上显示出来。

接下来把可调电位器与LED相组合，通过学习利用可调电位器读取模拟值的方法和在前面课程中我们利用代码调节LED亮度的方法相组合，我们利用电位器读取到的模拟值控制LED的亮度。设计代码时，模拟值的范围是0-1023，LED的亮度是由PWM值控制，范围为0-255。在这里，我们就需要用到映射功能，将0-1023数值映射到0-255。设置成功后，我们就可以通过旋转电位器，控制LED的亮度。

实验器材：

|![](media/1afad67218b18e282facaa116d7db6f4.png)|![](media/4146163f089c50ed3c35849a8a493b4d.jpg)|![](media/6bdcfe2d26d6ada15ea399d96403a1c5.png)|![](media/0b55c5cdc20270e9f83288b9b7ef5346.png)|
|-|-|-|-|
|micro：bit主板1|扩展板×1|可调电位器×1|红色LED×1|
|![](media/d45516e7148c96da4a618a4d5e6c283c.png)|![](media/f3bb5e8990221d80b0cc657b2511f612.png)|![](media/f98d25c660ede7ed649a06d74d06077c.png)|![](media/eba39051f5dba50d108035967b48ea2a.jpg)|
|220Ω电阻×1|面包板×1|面包板连接线若干|micro USB数据线×1|

实验原理图：

![](media/ab8324c025841912cd13d3528169dc4f.png)

实验接线图：

![](media/2ad13c1e2e53541e0ad74a6031d3e724.png)

实验代码：

代码1：

根据上图的接线图接好线，由实验接线图可知，可调电位器是接在P0处，先用micro USB数据线将电脑和micro：bit主板连接好，再启动micro:
bit在线编程工具进行编写代码。

完整的代码程序：

![](media/41fd9e28bc934294084060fdb3d61a74.png)
①“当开机时”指令方块仅运行一次以启动程序。 
②关闭LED点阵屏。 
③在“无限循环”指令方块之内，程序循环运行 
④串行写入analog signal=P0读取的模拟信号 
⑤延时时间300毫秒

按照上图接好线，上传好代码，上电后，打开CoolTerm，点击Options，选择SerialPort，设置COM口和波特率，波特率设置为115200（经过测试，micro:bit的USB串口通讯波特率是115200），点击OK后，最后点击Connect。串口监视器显示对应数值，旋转可调电位器，数值变化，发现最大是1023，最小是1，如下图：

![](media/cfc23693604edddd710d75af185a1122.png)

代码2：

根据上图的接线图接好线，由实验接线图可知，可调电位器是接在P0处，红色LED是接在P2处，先用micro USB数据线将电脑和micro：bit主板连接好，再启动micro:
bit在线编程工具进行编写代码.

完整的代码程序：

![](media/3ca560d8097367111002f96ba285c516.png)
①“当开机时”指令方块仅运行一次以启动程序。 
②关闭LED点阵屏。 
③在“无限循环”指令方块之内，程序循环运行 
④P0的输入的模拟信号0-1023映射到P2的模拟信号输出（PWM）0-255。

实验结果：

按照接线图接好线，上传完程序，使用电池盒上电后，当旋转可调电阻器时，LED灯的亮度发生改变。

![](media/82286910c57698e9ec9c3b8f8d02baaf.png)

拓展实验：

将红色LED灯换成RGB灯，RGB灯的R引脚接IO口P1，G引脚接IO口P2，B引脚接IO口P3，可调电阻器控制RGB亮不同颜色的灯。

![](media/cf7e553d9d04ffd485bb7adcd1f7a1b3.png)

#### 第18课 煤气警报器

实验说明：

![](media/da5909252ded3d342ce89ad5f5393e4f.jpg)煤气报警器是为了预防气体中毒的一种家用的自动报警器，也是一种高灵敏度的气体探测器，应用高灵敏度的气敏元件作为气电转换元件，并配以电路和声光报警部分组成。当泄漏的气体达到危险极限值时报警器就会发生鸣响和声光报警。

这里使用的气敏元件是MQ-2气体传感器，MQ-2气体传感器可用于家庭用气体泄漏报警器、工业用可燃气体报警器以及便携式气体检测仪器，适宜于液化气、煤气、氢气、烟雾等的探测，被广泛运用到各种[消防报警系统](https://baike.so.com/doc/5909700-6122605.html)中。故因此，MQ-2气体传感器可以准确来说是一个多种气体探测器，同时还具有灵敏度高、响应快、稳定性好、寿命长、驱动电路简单等优点。

MQ-2气体传感器检测可燃气体与烟雾的浓度范围是100~10000ppm，对天然气、液化石油气、煤气等烟雾有很高的灵敏度，尤其对烷类烟雾更为敏感。在使用之前必须加热一段时间，这样输出的电阻和电压较准确。但是加热电压不宜过高，否则会导致内部的信号线熔断。

MQ-2气体传感器属于二氧化锡半导体气敏材料，属于表面离子式N型半导体。处于一定温度时，二氧化锡吸附空气中的氧，形成氧的负离子吸附，使半导体中的电子密度减少，从而使其电阻值增加。利用这一点就可以获得烟雾或可燃气体存在的信息，空气中烟雾或可燃气体的浓度越大，导电率越大，输出电阻越低，则输出的模拟信号就越大。传感器自带1个定位孔，方便你将传感器固定在其他设备。此外，通过旋转电位器可以调整灵敏度。

MQ-2气体传感器有两个信号端，模拟口A0和数字口D0。当检测到可燃气体浓度越高，A0数值越大；当检测到可燃气体浓度到达一定时，A0也到达一定数值。

在这实验中，MQ-2气体传感器的信号端A0接到micro：bit主板的P0，先通过读取P0端的模拟值，检测空气中可燃气体并将所测的模拟值在CoolTerm串口监视器上显示；再通过MQ-2气体传感器控有源蜂鸣器和LED。

实验器材：

|![](media/1afad67218b18e282facaa116d7db6f4.png)|![](media/4146163f089c50ed3c35849a8a493b4d.jpg)|![](media/5ee7a61fcdcfb60641a3646bdb2c71d9.png)|![](media/f2c4218fde420fee758fcdf746e2a62a.png)|![](media/1f75f6b443ad7d7f8050adc2ef3b2cb7.png)|![](media/22cfb78971e957a28b2d02dcc113db04.png)|
|-|-|-|-|-|-|
|micro：bit主板1|扩展板×1|有源蜂鸣器×1|MQ-2气体传感器模块×1|2.4KΩ电阻×1|公对母杜邦线若干|
|![](media/29460b625f218f6d0c310637bae2fe5c.png)|![](media/b2f58386573c89f41a6f8fcab30de90e.png)|![](media/f8f40798ec2756dd5208a550a311e6ae.png)|![](media/f894c76c41919537f0d0abe7c827fa02.png)|![](media/d45516e7148c96da4a618a4d5e6c283c.png)|![](media/2bca2f97e28430f8e50dcb75b51aeeb9.png)|
|S8050三极管×1|面包板×1|面包板连接线若干|红色LED×1|220Ω电阻×1|4P连接线×1|

实验原理图

![](media/b1df35dc68820ffe7eaabc586a15443e.png)

实验接线图：

![](media/7401728efc66c743ba9514ea8651e47e.png)

实验代码：

代码1：

根据上图的接线图接好线，由实验接线图可知，MQ-2气体传感器模块的信号端A0接在P0处，先用micro USB数据线将电脑和micro：bit主板连接好，再启动micro:
bit在线编程工具进行编写代码：

完整的代码程序：

![](media/43f9c752bae8352e3767d22be77d6cfc.png)
①“当开机时”指令方块仅运行一次以启动程序。 
②关闭LED点阵屏。 
③在“无限循环”指令方块之内，程序循环运行 
④串行写入analog signal=P0读取的模拟信号 
⑤延时时间300毫秒

按照上图接好线，上传好代码，上电后，MQ-2气体传感器上的LED 2亮绿灯，并且还可以调节蓝色的正方体电位器，使模块上LED1介于不亮与亮之间的临界点时，灵敏度最高。打开CoolTerm，点击Options，选择SerialPort，设置COM口和波特率，波特率设置为115200，点击OK后，最后点击Connect。用打火机气体对着MQ-2气体传感器，串口显示的模拟值逐渐变大。（注意：传感器需要预热几分钟数据才会稳定，V1跳帽插在3.3V的位置![](media/d98ab8092834445c6f7ec93b74833c2b.png)）

![](media/7c6bf187a7145120f85ad46eb5513387.png)

代码2：（注意：这里可以根据自己的测试结果任意设置模拟值取值范围）

根据上图的接线图接好线，由实验接线图可知，MQ-2气体传感器模块的信号端A0接在P0处，红色led是接在P9处，有源蜂鸣器是接在P2处。先用micro USB数据线将电脑和micro：bit主板连接好，再启动micro:
bit在线编程工具进行编写代码:

完整的代码程序：

![](media/c6e4d059d9c96e106986c876077986e4.png)
①“当开机时”指令方块仅运行一次以启动程序。 
②关闭LED点阵屏。 
③在“无限循环”指令方块之内，程序循环运行 
④当P0读取的模拟信号>600成立时，执行then下的程序 
⑤将P2设置为高电平（1），有源蜂鸣器发出声音。 
⑥将P9设置为高电平（1），点亮红色LED。 
⑦延时时间100毫秒 
⑧将P9设置为低电平（0），熄灭红色LED 
⑨延时时间100毫秒 
⑩当P0读取的模拟信号>600不成立时，执行else下的程序 
⑪将P2设置为低电平（0），有源蜂鸣器不发出声音 
⑫将P9设置为低电平（0），熄灭红色LED

实验结果：

按照接线图接好线，上传完程序，上电后，用打火机气体对着MQ-2气体传感器，当模拟值大于600时，有源蜂鸣器响起且LED灯闪烁，同时模块上LED1点亮；否则有源蜂鸣器不响且LED熄灭，同时模块上LED1熄灭。（注意：传感器需要预热几分钟数据才会稳定，V1跳帽插在3.3V的位置![](media/d98ab8092834445c6f7ec93b74833c2b.png)）

![](media/146a32b13d6d83e3ecc5974e980103d2.png)

#### 第19课 水位监测警报器

实验说明：

![](media/25b813a89c2387246bdf21d9e91a59e4.png)在生活中，一遇到大雨或暴雨，河流或者水库中的水位暴涨，到达一定水位时，需要开闸泄洪，解决安全隐患。然而怎么检测河流或者水库中的水位呢？这就需要用到水位传感器。

水位传感器是一个模拟输入模块，它是一款简单易用、小巧轻便、性价比较高的水位/水滴识别检测传感器，其是通过具有一系列的暴露的平行导线线迹测量其水滴/水量大小从而判断水位，轻松完成水量到模拟信号的转换，输出的模拟值可以直接被程序中函数所应用，达到水位报警的功效。低功耗，灵敏度是其又一大特点。

在这个实验中，我们用水位传感器来模拟检测水杯中的水位，并作出相应报警。我们将水位传感器的信号端接到micro：bit主板的P0，通过读取P0端的模拟值，检测水位高低，水位越高，模拟值越大。我们将所测的模拟值在CoolTerm串口监视器上显示，并且控制当水位到达一定高度时，外接LED闪烁。

实验器材：

|![](media/12fcb86c28bbc00407c14d20b91eb7f9.png)|![](media/794591ef250ff8312b2377abf320a74d.jpg)|![](media/81f4af09c40e6bc14f3dfdee52e8ff0c.png)|![](media/5ec1b04a4fbaa0f4789913daf07dc2ed.png)|![](media/539ff6066e7b9760236a50f03eb2cf4c.png)|![](media/372d07e360ed3bc879cebc8365f8e0fc.png)|
|-|-|-|-|-|-|
|micro：bit主板1|扩展板×1|红色LED×1|黄色LED×1|绿色LED×1|220Ω电阻×3|
|![](media/ed611405098dd43e9a3a7ddd0ed5fc8b.png)|![](media/e1245501c8a491cca9a4862d7a1bfc46.png)|![](media/223eb07041793a4d3e152b31cb990cb9.png)|![](media/d8cc5cb50ea982a46b3b72abdc563f5f.jpg)|![](media/90bf5ac3f0673141d41408d20c722034.png)|||
|keyes水位传感器模块×1|面包板×1|公对母杜邦线若干|micro USB数据线×1|3P连接线×1|||

实验原理图：

![](media/4cbd689da6f8497363483f2f1c7227ed.png)

实验接线图：

![](media/1750d38b7293db5aa1ff67ed5987048e.png)

实验代码：

代码1：

根据上图的接线图接好线，由实验接线图可知，水位传感器模块的信号端S是接在P0处，先用micro USB数据线将电脑和micro：bit主板连接好，再启动micro:
bit在线编程工具进行编写代码:

完整的代码程序：

![](media/2696e85a8f514af768fb269d16fc23e4.png)
①“当开机时”指令方块仅运行一次以启动程序。 
②关闭LED点阵屏。 
③在“无限循环”指令方块之内，程序循环运行 
④串行写入analog signal=P0读取的模拟信号 
⑤延时时间200毫秒

按照上图接好线，上传好代码，上电后，打开CoolTerm，点击Options，选择SerialPort，设置COM口和波特率，波特率设置为115200（经过测试，micro:bit的USB串口通讯波特率是115200），点击OK后，最后点击Connect。水位传感器没有插入到水中时，输出值为0，随着水位传感器逐渐没入水中，模拟引脚的值越来越大，当完全没入水中时，输出值为710左右。然后逐渐拔出水位传感器，模拟引脚的值随之减小。但是当水位传感器完全拔出来后，输出值没有为0，个人认为是这时水位传感器的表面还有水，会影响模拟引脚的输出值。用干纸巾擦干水位传感器的表面后，模拟引脚的输出值变为0。![](media/053908733167addeedb55f9ace719211.png)

代码2：（注意：这里可以根据自己的测试结果任意设置模拟值取值范围）

根据上图的接线图接好线，由实验接线图可知，水位传感器模块的信号端S是接在P0处，黄色LED是接在P8，绿色LED是接在P9，红色LED是接在P2。先用micro USB数据线将电脑和micro：bit主板连接好，再启动micro:
bit在线编程工具进行编写代码:

完整的代码程序：

![](media/74b9ae813d6b8094af644ae87b1980d5.png)
关闭LED点阵屏。 当P0读取的模拟信号<100成立时，熄灭红、黄、绿LED灯 当100≤P0读取的模拟信号<200成立时， 点亮绿灯、熄灭红黄灯。 当200≤P0读取的模拟信号<400成立时，点亮黄灯、熄灭红绿灯。 当P0读取的模拟信号≥400成立时，点亮红灯、熄灭黄绿灯。

实验结果：

按照接线图接好线，上传完程序，上电后，把水位传感器插入装有水的杯子中，当模拟值小于100时，红、绿、黄色LED灯都不亮；当模拟值大于等于100且小于200时，绿LED灯亮；当模拟值大于等于200且小于400时，黄色LED灯亮；当模拟值大于等于400时，红色LED灯亮。

#### 第20课 水滴监测警报器

实验说明：

我们的生活被空气包围，空气中包含很多成分，有些是有用的，有些是有害的，有些成分对人体影响重大，有些成分对人体影响轻微。在这个实验中，我们用keyes水滴水蒸气传感器来模拟检测空气中的水蒸气含量。

keyes水滴水蒸气传感器的原理是水滴通过接触电路板上裸露的网状型金属的面积多少来检测水量的大小。水量越多，就会有更多的线条被连通，随着导电的接触面积增大，输出的电压就会逐步上升。除了可以检测水量的大小，它还可以检测空气中的水蒸气。即：水滴水蒸汽传感器是一种模拟传感器，可以作为一个简单的雨水探测器和液位开关。当传感器表面的湿度升高时，输出电压将升高。

注意事项：连接部位不防水，请勿放入水中。

实验器材：

|![](media/1afad67218b18e282facaa116d7db6f4.png)|![](media/4146163f089c50ed3c35849a8a493b4d.jpg)|![](media/907884a262b5a4b8976974008f1c6246.png)|![](media/90bf5ac3f0673141d41408d20c722034.png)|![](media/1d00438ef7033e8282bfe81059828b63.jpg)|![](media/1f75f6b443ad7d7f8050adc2ef3b2cb7.png)|
|-|-|-|-|-|-|
|micro：bit主板1|扩展板×1|水滴传感器模块×1|3P连接线×1|micro USB数据线×1|2.4KΩ电阻×1|
|![](media/29460b625f218f6d0c310637bae2fe5c.png)|![](media/b2f58386573c89f41a6f8fcab30de90e.png)|![](media/f8f40798ec2756dd5208a550a311e6ae.png)|![](media/f894c76c41919537f0d0abe7c827fa02.png)|![](media/d45516e7148c96da4a618a4d5e6c283c.png)|![](media/22cfb78971e957a28b2d02dcc113db04.png)|
|S8050三极管×1|面包板×1|面包板连接线若干|红色LED×1|220Ω电阻×1|公对母杜邦线若干|

实验接线图

![](media/49f24b9e15ce3ab66eff4a38a6a83899.png)

实验一

根据上图的接线图接好线，水滴传感器模块的信号端S是接在P0处，先用micro USB数据线将电脑和micro：bit主板连接好，再启动micro:
bit在线编程工具进行编写代码：

完整的代码程序：

![](media/551a44050258bb61f12cd4d5fe0f2049.png)
①“当开机时”指令方块仅运行一次以启动程序。 ②关闭LED点阵屏。 ③在“无限循环”指令方块之内，程序循环运行 ④串行写入analog signal=P0读取的模拟信号 ⑤延时时间200毫秒

实验一结果

按照接线图接好线，上传完程序，上电后，打开CoolTerm，点击Options，选择SerialPort，设置COM口和波特率，波特率设置为115200（经过测试，micro:bit的USB串口通讯波特率是115200），点击OK后，最后点击Connect。
用手触摸水滴传感器，湿度逐渐增大，传感器模拟信号也逐渐增大。

![](media/592c622938340d47d5697f908dfed245.png)

实验二

根据上图的接线图接好线，由实验接线图可知，水滴传感器模块的信号端A0接在P0处，红色led是接在P9处，有源蜂鸣器是接在P2处。先用micro USB数据线将电脑和micro：bit主板连接好，再启动micro:
bit在线编程工具进行编写代码:

完整的代码程序：

![](media/c6e4d059d9c96e106986c876077986e4.png)
①“当开机时”指令方块仅运行一次以启动程序。 
②关闭LED点阵屏。 
③在“无限循环”指令方块之内，程序循环运行 
④当P0读取的模拟信号>600成立时，执行then下的程序 
⑤将P2设置为高电平（1），有源蜂鸣器发出声音。 
⑥将P9设置为高电平（1），点亮红色LED。 
⑦延时时间100毫秒 
⑧将P9设置为低电平（0），熄灭红色LED 
⑨延时时间100毫秒 
⑩当P0读取的模拟信号>600不成立时，执行else下的程序 
⑪将P2设置为低电平（0），有源蜂鸣器不发出声音 
⑫将P9设置为低电平（0），熄灭红色LED

实验二结果

按照接线图接好线，上传完程序，上电后，用手触摸水滴传感器，当模拟值大于600时，有源蜂鸣器响起且LED灯闪烁，同时模块上LED1点亮；否则有源蜂鸣器不响且LED熄灭，同时模块上LED1熄灭。

#### 第21课 LCD1602屏的使用

![](media/b361fe3095bb7e99bcd817fb1499f9e8.jpg)

概述

这是一个可以显示2行，每行16个字符的液晶屏模块。液晶屏显示蓝底白字，自带I2C通信模块，使用时只需连接单片机I2C通信接口，大大节约了单片机资源。I2C通信模块上带有1个电位器，可用于调节显示屏背光，通信地址默认为0x27。

规格参数

工作电压：DC 5V

接口：间距为2.54mm 4pin防反接口

定位孔大小：直径为3mm

通讯方式：I2C通讯

I2C通信地址: 0x27

显示屏颜色：蓝底白字

尺寸：80\*37\*18mm

重量：34.7g

实验器材

|![](media/1afad67218b18e282facaa116d7db6f4.png)|![](media/4146163f089c50ed3c35849a8a493b4d.jpg)|![](media/948c4fe60cbe6b6ecaffa3a0eab24d20.jpg)|![](media/c6d171b4340068584260edac1cce331b.png)|![](media/41db97ac7eca119a020c173e34cf9a27.jpg)|
|-|-|-|-|-|
|micro：bit主板1|扩展板×1|1602 LCD显示屏模块×1|4P 转杜邦线母|micro USB数据线×1|
|![](media/91ff6e019f8560e46ec051c2b04d9b06.png)|![](media/0e9767fbe06272b98c295ed74f03faef.png)||||
|18650电池×2|18650电池盒×1||||

接线图

![](media/c74c7cea91c9a8e0f7ab152c9154bb53.png)

实验程序

根据上图的接线图接好线，由实验接线图可知，1602 LCD液晶显示屏模块的SDA引脚是接在P20处，SCL引脚是接在P19处，先用micro USB数据线将电脑和micro：bit主板连接好，再启动micro:
bit在线编程工具进行编写代码，操作步骤如下：

添加1602 LCD液晶显示屏模块的库文件，添加方法如下:

利用库文件设置代码，在下图模块添加库文件，点击“扩展”。

![](media/8da432683bd723352e7651454111d718.png)

输入库文件链接：[https://github.com/xuefengedu/pxt-lcd1602_CN](https://github.com/xuefengedu/pxt-lcd1602_CN)并搜索，显示如下图，点击库文件，自动下载安装库文件。

![](media/652b2dccae922926978d22878a8022c8.png)

1602 LCD液晶显示屏模块的库文件安装好了，然后在编辑代码栏目里看到对应模块。

![](media/ec5aeeaba540736ba252059e830029f5.png)

完整的实验程序

![](media/755790fb59147d5b273971709a382ff8.png)

①“当开机时”指令方块仅运行一次以启动程序。 
②关闭LED点阵屏。 
③设置LCD1602 I2C地址0x27 
④在LCD坐标x:3 y:0显示字符串Keyes 
⑤设置字符串显示 
⑥设置LCD背光开 
⑦将Value设为0 
⑧在“无限循环”指令方块之内，程序循环运行。 
⑨以1为幅度更改Value 
⑩在LCD坐标x:7 y:1显示数字Value 
⑪延时时间500毫秒

实验结果

按照接线图接好线，上传好程序，上电后，再旋转1602LCD液晶显示屏模块后面的电位器调节1602LCD液晶显示屏的亮度后，1602 LCD液晶显示屏模块的显示屏上第一行显示“Keyes”字符，第二行显示数字，每过1秒，数字加1。（注意：扩展板使用DC 7~9V的电源供电，V2跳帽插在5V的位置![](media/46fd5dcca9654221bc7066a721ecba88.png)，实验才能正常工作）

![](media/392710e0c20bb450ff19df92a35d8093.png)

扩展实验

1602LCD液晶显示屏模块的显示屏先显示数字“123”和字符串“Hello”，再随机显示数字。

![](media/b743eabe8e1d7bbfa7e6138f0bdc58e2.png)

L293D驱动电机

实验说明：

![](media/b4e92d41bca93925909a75dfa1029a13.png)L293D是一种直流电动驱动IC，在一些机器人项目中可用来驱动直流电机或步进电机。它共有16个引脚，可以同时驱动两路直流电机。输入电压范围：4.5 V ~ 36 V，每通道输出电流：MAX 600mA，可以驱动感性负载，特别是其输入端可以与单片机直接相连，从而很方便地受单片机控制。当驱动小型直流电机时，可以直接控制两路电机，并且可以实现电机正转与反转，实现此功能只需改变输入端的高低电平。市面上有许多采用L293D芯片的电机驱动板，当然我们也可以自己通过简单连接来使用它。

L293D引脚图：

![](media/695343126c1f28476e1f5f4016e865a7.jpg)

|引脚号|引脚名称|描述|
|-|-|-|
|1|Enable1,2|该引脚使能输入引脚Input 1(2)和Input 2(7)|
|2|Input1|直接控制输出1引脚，由数字电路控制。|
|3|Output1|连接到电机1的一端|
|4|GND|接地引脚连接到电路的接地(0V)|
|5|GND|接地引脚连接到电路的接地(0V)|
|6|Output2|连接到电机1的另一端|
|7|Input2|直接控制输出2引脚。由数字电路控制|
|8|Vcc2(Vss)|连接到运行电机的电压引脚(4.5V至36V)|
|9|Enable3,4|该引脚使能输入引脚输入3(10)和输入4(15)|
|10|Input3|直接控制输出3引脚。由数字电路控制|
|11|Output3|连接到电机2的一端|
|12|GND|接地引脚连接到电路的接地(0V)|
|13|GND|接地引脚连接到电路的接地(0V)|
|14|Output4|连接到电机2的另一端|
|15|Input4|直接控制输出4引脚。由数字电路控制|
|16|Vcc1(Vss)|连接到+ 5V以启用IC功能|

实验器材：

|![](media/1afad67218b18e282facaa116d7db6f4.png)|![](media/4146163f089c50ed3c35849a8a493b4d.jpg)|![](media/9e9233035db1e36685331f9ad4e5141f.png)|![](media/2bddbfb801f805cbcd3ba5c6af7b91f5.png)|![](media/016a5a1ac8ff10de9be74e379f693097.jpg)|
|-|-|-|-|-|
|micro：bit主板1|扩展板×1|L293D驱动芯片×1|小风扇×1|直流电机（焊有2根杜邦线）×1|
|![](media/91ff6e019f8560e46ec051c2b04d9b06.png)|![](media/0e9767fbe06272b98c295ed74f03faef.png)|![](media/dd52cabc214347c3925e7878e2970768.png)|![](media/22cfb78971e957a28b2d02dcc113db04.png)|![](media/45a85ef761928acf060e37a98317e7a6.png)|
|18650电池×2|18650电池盒×1|面包板连接线若干|公对母杜邦线若干|面包板×1|

实验原理图：

![](media/902caaeb34b89dac94762197541ec1a5.png)

实验接线图：

![](media/d6ce8c2835013c96f3b1849ae3824a4f.png)

实验代码：

根据上图的接线图接好线，由实验接线图可知，L293D驱动芯片的Enable3,4端是接在P0处，Input3端是接在P1处，Input4端是接在P2处，电机的红线是接在L293D驱动芯片的Onput3端，黑线是接在L293D驱动芯片的Onput4端。先用micro USB数据线将电脑和micro：bit主板连接好，再启动micro:
bit在线编程工具进行编写代码：

完整的代码程序：

![](media/19baa44f6f3a3502686e86f98c69eaf9.png)
①“当开机时”指令方块仅运行一次以启动程序。 
②关闭LED点阵屏。 
③在“无限循环”指令方块之内，程序循环运行。 
④设置P0的模拟值为800 
⑤将P1设置为高电平（1） 
⑥将P2设置为低电平（0） 
⑦延时时间1000毫秒 
⑧设置P0的模拟值为800 
⑨将P1设置为低电平（0） 
⑩将P2设置为高电平（1） 
⑪延时时间1000毫秒

实验结果：

按照接线图接好线，上传完程序，上电后，电机顺时针转1s，逆时针转1s，循环重复。（注意：扩展板使用DC 7~9V的电源供电，V2跳帽插在5V的位置![](media/5705a02d2e80cb7ecc127b697d9f9992.png)，实验才能正常工作）

![](media/eb29dffdbc9cf7f36aaa3701942b86f7.png)

#### 第23课 舵机控制

实验说明：

![](media/eeb16d7701653afe94e25227d26e7ef3.png)
当我们在做DIY自己小车时，我们会经常让小车实现个自动避障的功能。在DIY过程中我们需要一个舵机控制超声波模块左右转动，然后检测小车与左右两方障碍物的距离，方便控制小车避障。在这课程中我们着重介绍下舵机的原理和使用方法。

舵机是一种位置伺服的驱动器，主要是由外壳、电路板、无核心马达、齿轮与位置检测器所构成。其工作原理是由接收机或者单片机发出信号给舵机，其内部有一个基准电路，产生周期为20ms，宽度为1.5ms
的基准信号，将获得的直流偏置电压与电位器的电压比较，获得电压差输出。经由电路板上的IC
判断转动方向，再驱动无核心马达开始转动，透过减速齿轮将动力传至摆臂，同时由位置检测器送回信号，判断是否已经到达定位。适用于那些需要角度不断变化并可以保持的控制系统。当电机转速一定时，通过级联减速齿轮带动电位器旋转，使得电压差为0，电机停止转动。一般舵机旋转的角度范围是0
度到180 度。

舵机有很多规格，但所有的舵机都有外接三根线，分别用棕、红、橙三种颜色进行区分，由于舵机品牌不同，颜色也会有所差异，棕色为接地线，红色为电源正极线，橙色为信号线。

舵机的转动的角度是通过调节PWM（脉冲宽度调制）信号的占空比来实现的，标准PWM（脉冲宽度调制）信号的周期固定为20ms（50Hz），理论上脉宽分布应在1ms到2ms
之间，但是，事实上脉宽可由0.5ms 到2.5ms
之间，脉宽和舵机的转角0°～180°相对应。对于同一信号，不同牌子的舵机旋转的角度也会有所不同。

![](media/9525f9ee3c8d14d5249fecaf71043236.png)

用micro：bit主板控制舵机的方法有两种，一种是通过micro.bit
的普通数字传感器接口产生占空比不同的方波，模拟产生PWM
信号进行舵机定位，第二种是直接利用micro.bit自带的Servo
函数进行舵机的控制，micro.bit的驱动能力有限，所以当需要控制1个及以上的舵机时需要外接电源。

软件上，我们不仅可以直接在米思齐软件上设置对应引脚的输出高低电平，从而控制舵机的角度；而且我们还特别设置了智能家居库文件，只需一条代码即可控制舵机的角度，简单方便。

这里要注意，不要使用电脑USB数据线供电，因为如果电流需求大于500mA，会有烧毁USB数据线的可能，推荐使用电池外置供电。

实验器材：

|![](media/12fcb86c28bbc00407c14d20b91eb7f9.png)|![](media/794591ef250ff8312b2377abf320a74d.jpg)|![](media/0d44138f34688303fad2deb19aadf519.png)|![](media/9136481a402320514ecf367ff92f0c91.jpg)|![](media/0e9767fbe06272b98c295ed74f03faef.png)|![](media/73b7c8e0e0d2d846ca8fde8fdcdc56bc.png)|
|-|-|-|-|-|-|
|micro：bit主板1|扩展板×1|舵机×1|micro USB数据线×1|18650电池盒×1|18650电池×2|

实验接线图

![](media/ab151d5ee89cd010154f592fa083cec7.png)

舵机的黄线端是接在P2处

实验代码：

![](media/df039f65cabed34bbdcbe46df2bead5e.png)
①“当开机时”指令方块仅运行一次以启动程序。 
②关闭LED点阵屏。 
③将舵机P2旋转到0度 
④延时时间100毫秒 
⑤在“无限循环”指令方块之内，程序循环运行 
⑥将舵机P2旋转到0度 
⑦延时时间1000毫秒 
⑥将舵机P2旋转到90度 
⑦延时时间1000毫秒

实验结果：

按照接线图接好线，上传完程序，上电后，舵机在0°~90°角度范围来回摆动。

（注意：扩展板使用DC 7~9V的电源供电，V2跳帽插在5V的位置![](media/5705a02d2e80cb7ecc127b697d9f9992.png)，实验才能正常工作）

第24课 控制步进电机

实验说明：

![](media/54280a75113068ca1a683cf0f59f0f57.png)步进电机是将电[脉冲](https://baike.so.com/doc/5327352-5562524.html)信号转变为[角位移](https://baike.so.com/doc/2803889-2959433.html)或线位移的开环控制元件。在非超载的情况下，电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数，而不受负载变化的影响，当步进驱动器接收到一个脉冲信号，它就驱动步进电机按设定的方向转动一个固定的角度，称为"步距角"，它的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制角位移量，从而达到准确定位的目的；同时可以通过控制脉冲频率来控制电机转动的速度和加速度，从而达到调速的目的。

步进电机是一种[感应电机](https://baike.so.com/doc/6284999-6498474.html)，它的工作原理是利用电子电路，将直流电变成分时供电的，多相时序控制电流，用这种电流为步进电机供电，步进电机才能正常工作，驱动器就是为步进电机分时供电的，多相时序控制器。

虽然步进电机已被广泛地应用，但步进电机并不能像普通的直流电机和交流电机一样在常规下就能使用。它必须由双环形脉冲信号、功率驱动电路等组成控制系统方可使用。因此用好步进电机却非易事，它涉及到机械、电机、电子及计算机等许多专业知识。步进电机作为[执行元件](https://baike.so.com/doc/6281461-6494919.html)，是机电一体化的关键产品之一，广泛应用在各种自动化控制系统中。

特征：（1）步进电机的旋转角度与输入脉冲成比例；

（2）步进电机在静止时具有全扭矩（如果绕组通电）；

（3）精确的定位和运动的重复性，因为良好的步进电机的精度为一步的-5%，并且从一步到下一步的误差是不累积的；

（4）对启动/停止/反转有极好的响应；

（5）非常可靠，因为步进电机中没有接触刷。因此，步进电机的寿命仅取决于轴承的寿命；

（6）步进电机对数字输入脉冲的响应提供开环控制，使步进电机更简单，控制成本更低；

（7）可以通过直接连接到轴上的负载实现非常低速的同步旋转；

（8）由于转速与输入脉冲的频率成正比，因此可以实现大范围的转速。

实验器材：

|![](media/1afad67218b18e282facaa116d7db6f4.png)|![](media/4146163f089c50ed3c35849a8a493b4d.jpg)|![](media/a4dd5391ca82ce5ce34e0f20011c14c4.png)|![](media/ec504b3674cf799f93802d94610dae2d.png)|![](media/1d8aa67c29c8e7abdab384d507fd8ef4.png)|![](media/51ca8f499ab2b961a8de71a4c1b8c03b.png)|
|-|-|-|-|-|-|
|micro：bit主板1|扩展板×1|Keye ULN200步进电机驱动板×1|公对母面包板连接线若干|18650电池盒×1|18650电池×2|
|![](media/179a0e03fda535e10312b499125e3fc3.png)|![](media/e1d73fd55419c7da07dbdddea4d7e7cb.png)|||||
|Keyes 5线步进电机×1|面包板×1|||||

实验接线图：

![](media/436da7909b872e50c40771700ae08533.png)

步进电机驱动模块的IN1对应的是接到P0处，IN2对应的是接到P1处，IN3对应的是接到P2处，IN4对应的是接到P8，接线用公对母的杜邦线接到面包板上转接

实验代码：

(1)添加步进电机驱动模块的库文件，添加方法如下：

利用库文件设置代码，在下图模块添加库文件，点击“扩展”。

![](media/c782c85a5c856501d079fb35aa31dc96.png)

输入库文件链接：<https://github.com/ckmaker-cckk/pxt-ckbase>并搜索，显示如下图，点击库文件，自动下载安装库文件。

![](media/0c600249d28d7cda58dde53c8d8a0a6b.png)

步进电机驱动的库文件安装成功，然后在编辑代码栏目里看到对应模块。

![](media/da39dc157262175827837498254240ca.png)

完整的实验程序

![](media/0ad7aa6f36a712114b4d8c50de3fa8f7.png)
①“当开机时”指令方块仅运行一次以启动程序。 
②关闭LED点阵屏。 
③步进电机初始化 
④设置步进电机速度为SPEED3 
⑤步进电机逆时针转3圈 
⑥步进电机顺时针转3圈

说明：步进电机按照如上代码实现以最大速度先逆时针转3圈再顺时针转3圈，分三步：
第一步进行步进电机初始化，步进电机的IN1-IN4选择microbit的对应引脚。注意选择引脚的时候要选择没有连接LED的引脚，否则可能引起不正常，硬件按照初始化的引脚连接。

第二步设置设置旋转速度，1级最慢，3级最快。

第三步让电机先逆时针转3圈再顺时针转3圈（如果是正值，表示电机就逆时针转；如果是负值，表示电机就顺时针转。）

实验结果：

按照接线图接好线，上传完程序，上电后，步进电机以最大速度先逆时针转3圈再顺时针转3圈之后停止。

（注意：扩展板使用DC 7~9V的电源供电，V2跳帽插在5V的位置![](media/5705a02d2e80cb7ecc127b697d9f9992.png)，实验才能正常工作）

拓展实验：

![](media/73a6cd33f8f29f3949964b247192ef5b.png)

使步进电机以较大速度先逆时针转1圈接着顺时针转1圈，然后逆时针转90°接着顺时针转180°，之后停止。

#### 第25课 继电器的使用

实验说明：

![](media/e6c29f2ca8a2177b6821e6773a826cf5.png)在生活中，我们一般用220V的交流电来驱动电器设备。有时候我们需要用到开关来控制电器，假如直接

把开关接到220V的交流电电路中，一旦漏电，那么就会危及人身安全，这样不好。于是我们就设计了一个继电器模块。这个继电器模块常开（NO）和常闭（NC）接口，它是高电平有效。

继电器模块具有[控制系统](https://baike.baidu.com/item/%E6%8E%A7%E5%88%B6%E7%B3%BB%E7%BB%9F/1051898)（又称[输入](https://baike.baidu.com/item/%E8%BE%93%E5%85%A5/32696)[回路](https://baike.baidu.com/item/%E5%9B%9E%E8%B7%AF/35792)）和被[控制系统](https://baike.baidu.com/item/%E6%8E%A7%E5%88%B6%E7%B3%BB%E7%BB%9F/1051898)（又称[输出](https://baike.baidu.com/item/%E8%BE%93%E5%87%BA/11056752)[回路](https://baike.baidu.com/item/%E5%9B%9E%E8%B7%AF/35792)），通常应用于[自动控制](https://baike.baidu.com/item/%E8%87%AA%E5%8A%A8%E6%8E%A7%E5%88%B6/5337539)[电路](https://baike.baidu.com/item/%E7%94%B5%E8%B7%AF/33197)中，它实际上是用较小的[电流](https://baike.baidu.com/item/%E7%94%B5%E6%B5%81/268192)、较低的[电压](https://baike.baidu.com/item/%E7%94%B5%E5%8E%8B/269108)去控制较大[电流](https://baike.baidu.com/item/%E7%94%B5%E6%B5%81/268192)、较高的[电压](https://baike.baidu.com/item/%E7%94%B5%E5%8E%8B/269108)的一种“[自动开关](https://baike.baidu.com/item/%E8%87%AA%E5%8A%A8%E5%BC%80%E5%85%B3/3967423)”。故在[电路](https://baike.baidu.com/item/%E7%94%B5%E8%B7%AF/33197)中起着[自动调节](https://baike.baidu.com/item/%E8%87%AA%E5%8A%A8%E8%B0%83%E8%8A%82/4094137)、[安全](https://baike.baidu.com/item/%E5%AE%89%E5%85%A8/32778)[保护](https://baike.baidu.com/item/%E4%BF%9D%E6%8A%A4/5807080)、[转换](https://baike.baidu.com/item/%E8%BD%AC%E6%8D%A2/197560)[电路](https://baike.baidu.com/item/%E7%94%B5%E8%B7%AF/33197)等[作用](https://baike.baidu.com/item/%E4%BD%9C%E7%94%A8/33062)。它可以让micro：bit主板驱动3A以下负载，如LED灯带、直流马达、微型水泵、电磁阀可插拔式接口设计，方便使用。电磁继电器的内部主要部件是电磁铁A、衔铁B、弹簧C、动触点D、静触点（常开触点）E、和静触点（常闭触点）F，(如图所示)![](media/1e42fe14797665eebea1b1d98659e847.jpg)。只要在线圈两端加上一定的[电压](https://baike.baidu.com/item/%E7%94%B5%E5%8E%8B)，线圈中就会流过一定的电流，从而产生电磁效应，衔铁就会在电[磁力](https://baike.baidu.com/item/%E7%A3%81%E5%8A%9B)吸引的作用下克服返回弹簧的拉力吸向铁芯，从而带动衔铁的[动触点](https://baike.baidu.com/item/%E5%8A%A8%E8%A7%A6%E7%82%B9)与[静触点](https://baike.baidu.com/item/%E9%9D%99%E8%A7%A6%E7%82%B9)（常开触点）吸合。当线圈断电后，电磁的吸力也随之消失，衔铁就会在弹簧的[反作用力](https://baike.baidu.com/item/%E5%8F%8D%E4%BD%9C%E7%94%A8%E5%8A%9B)返回原来的[位置](https://baike.baidu.com/item/%E4%BD%8D%E7%BD%AE)，使动触点与原来的静触点（常闭触点）释放。这样吸合、释放，从而达到了在电路中的导通、切断的目的。对于继电器的“常开、常闭”触点，可以这样来区分：[继电器线圈](https://baike.baidu.com/item/%E7%BB%A7%E7%94%B5%E5%99%A8%E7%BA%BF%E5%9C%88)未通电时处于断开状态的静触点，称为“常开触点”；处于接通状态的静触点称为“常闭触点”。

使用时，我们在G（-）、V（+）供电5V，S接信号端，当给S高电压时，驱动继电器，即常开（NO）连通、常闭（NC）断开；当给S低电压时，关闭继电器，即常开（NO）断开、常闭（NC）连通。这样我们把220V的交流电电路接到常开（NO）或常闭（NC）接口，通过3V电压控制，安全方便。

在这里，我们将模拟继电器控制外接电路，我们用继电器模块控制一个LED（为方便接线，电路中没有加220V电压，还是3V，原理是一样）的亮灭。

实验器材：

|![](media/1afad67218b18e282facaa116d7db6f4.png)|![](media/4146163f089c50ed3c35849a8a493b4d.jpg)|![](media/81f4af09c40e6bc14f3dfdee52e8ff0c.png)|![](media/2c25c9d55d09023693ef1bcb2555c7f7.png)|![](media/0bff4f3f759b3bad95007f5a079e8e9f.png)|
|-|-|-|-|-|
|micro：bit主板1|扩展板×1|红色LED×1|单路继电器模块×1|公对母杜邦线若干|
|![](media/e1d73fd55419c7da07dbdddea4d7e7cb.png)|![](media/d45516e7148c96da4a618a4d5e6c283c.png)|![](media/93564082f9f67498852f0e43d081c001.png)|![](media/a13ed531bb9d730dc840897d36abd72c.png)|![](media/90bf5ac3f0673141d41408d20c722034.png)|
|面包板×1|220Ω电阻×1|18650电池盒×1|18650电池×2|3P连接线×1|

实验接线图：

![](media/9acbc227c215bac3fe3b6d99f47b36a1.png)

继电器的信号端S是接在P0处

实验代码：

![](media/8a0c0a5a7632ec0ca2653c2d4d1a48d9.png)
①“当开机时”指令方块仅运行一次以启动程序。 
②关闭LED点阵屏。 
③在“无限循环”指令方块之内，程序循环运行 
④将P0设为高电平（1） 
⑤延时时间500毫秒 
⑥将P0设为低电平（0） 
⑦延时时间500毫秒

实验结果：

按照接线图接好线，上传完程序，上电后，将看到继电器接通（NO接通，NC断开）0.5秒钟，然后断开0.5秒钟（NC闭合，NO断开），重复循环。当继电器接通时，红色LED亮起；接着继电器关闭，则红色LED熄灭，循环进行。

#### 第26课 18B20测温

实验说明：

这是一个常用的18B20温度传感器，它主要采用DS18B20传感器元件。该元件是美国DALLAS公司生产的总线数字温度感测元件。它支持多点组网功能，即多个DS18B20可以并联在唯一的三线上，实现多点测温。DS18B20
的核心功能是直接数字测温，分辨率是 9,10，11,12
位，用户可配置的，对应的温度分度分别是 0.5°C, 0.25°C, 0.125°C,
和0.0625°C，上电后的默认分辨率是 12
位。它的测量结果以9-12位数字量方式串行传送，测温范围是55℃～＋125℃。![](media/161fd559b73a6568469a39e57771c6aa.png)

实验器材：

|![](media/1afad67218b18e282facaa116d7db6f4.png)|![](media/4146163f089c50ed3c35849a8a493b4d.jpg)|![](media/343975e50067a5d7c5e6cc8e9c6f373a.png)|![](media/54b0b6f5061593cad309d1e0e1fa4e23.png)|![](media/1eebb3a4569313546b9e6846663a1573.png)|![](media/49c82cffb1f8564b986f503b3bf0e8e6.png)|
|-|-|-|-|-|-|
|micro：bit主板1|扩展板×1|DS18B20×1|面包板×1|公对母杜邦线若干|2.4K电阻×2|
|![](media/948c4fe60cbe6b6ecaffa3a0eab24d20.jpg)|![](media/c6d171b4340068584260edac1cce331b.png)|![](media/93564082f9f67498852f0e43d081c001.png)|![](media/a13ed531bb9d730dc840897d36abd72c.png)|![](media/1cf02f1d57a39fca2d7e6b5223f66540.png)|||
|1602 LCD显示屏模块×1|4P 转杜邦线母|18650电池盒×1|18650电池×2|面包板连接线若干|||

实验接线图：

![](media/73e556ca0d9079368c2b8cc4a239c16a.png)

实验代码： 

添加18B20温度传感器的库文件，添加方法如下：

利用库文件设置代码，在下图模块添加库文件，点击“扩展”。

![](media/738184d403ec55b6c6b0f6821f827734.png)

搜索： <https://github.com/lionyhw/pxt-18b20-v2only> 点击添加

![](media/9f009627a50a97409304aa417a1296e2.png)

![](media/c459ce5926c5f7b127cee015a7673976.png)
①“当开机时”指令方块仅运行一次以启动程序。 
②关闭LED点阵屏。 
③在“无限循环”指令方块之内，程序循环运行 
④串口打印温度 
⑤延时时间200毫秒

按照上图接好线，上传好代码，上电后，打开CoolTerm，点击Options，选择SerialPort，设置COM口和波特率，波特率设置为115200（经过测试，micro:bit的USB串口通讯波特率是115200），点击OK后，最后点击Connect。串口监视器显示当前环境中的温度值，如下图：

![](media/779f2421a7f252a94242fe8f098364aa.png)

代码2：

![](media/bd0f58c1a49c1108594926fff21d220f.png)

实验结果

由上图接好线,上传好程序，上电后LCD1602显示屏显示当前环境温度

![](media/142d4d959278ec0b8ff6d26e76aba307.png)

#### 第27课 自制温湿度表

实验说明：

![](media/a5d06ccf730ef479438d6876e51bbd40.png)在前面实验中，我们利用LM35传感器中测试当前环境温度。在本课程中，我们利用XHT11温湿度传感器测试当前环境中的温湿度数值。

XHT11温湿度传感器，XHT11作为一款低价、入门级的温湿度传感器，常用于我们的单片机设计实例中;它应用专用的数字模块采集技术和温湿度传感技术，确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测温元件，XHT11为4针单排引脚封装，如下图，采用单线制串行接口，只需加适当的上拉电阻，信号传输距离可达20米以上，使其成为各类应用甚至最为苛刻的应用场合的最佳选择。该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。

在这实验中，我们将XHT11温湿度传感器的信号端接到micro：bit主板的P0，通过读取相关数据，利用特定公式计算出当前环境中的温湿度数值。我们将计算的数值在串口监视器上显示，然后将XHT11温湿度传感器和LCD显示屏模块相结合，使LCD显示屏模块显示出外界环境中的湿度和温度。

实验器材：

|![](media/1afad67218b18e282facaa116d7db6f4.png)|![](media/4146163f089c50ed3c35849a8a493b4d.jpg)|![](media/63bfe0753542552bee2fe98778e073c2.png)|![](media/11857c053c7d1f5d2f2d9e5aca43a180.png)|
|-|-|-|-|
|micro：bit主板1|扩展板×1|XHT11温湿度传感器（兼容XHT11）|3P 转杜邦线母|
|![](media/948c4fe60cbe6b6ecaffa3a0eab24d20.jpg)|![](media/c6d171b4340068584260edac1cce331b.png)|![](media/93564082f9f67498852f0e43d081c001.png)|![](media/a13ed531bb9d730dc840897d36abd72c.png)|
|1602 LCD显示屏模块×1|4P 转杜邦线母|18650电池盒×1|18650电池×2|

实验接线图

![](media/986b7b4d3d09dd374cc41f9b112a3c8f.png)

实验代码：

添加DHT11(DHT11兼容XHT11)温湿度传感器的库文件，添加方法如下：

利用库文件设置代码，在下图模块添加库文件，点击“扩展”。

![](media/738184d403ec55b6c6b0f6821f827734.png)

输入DHT11并搜索，显示如下图，点击库文件，自动下载安装库文件。

![](media/a53f15f9cb90fad30eb5075b3af89bab.png)

DHT11温湿度传感器模块的库文件安装成功，然后在编辑代码栏目里看到对应模块。

![](media/d83139e7316ed9da8e1954c162846b7a.png)

完整的代码程序：

![](media/3dd0c9cf8b2a5e3a032385f443417dea.png)
从TXHT11传感器的P0查询数据。在每次查询之间等待1（XHT11）或（DHT22）2秒。 串行写入数值“temperature ”=Read temperature 串行写入数值“humidity ”=Read humidity

按照接线图接好线，上传程序，上电后。打开CoolTerm，点击Options，选择SerialPort，设置COM口和波特率，波特率设置为115200，点击OK后，最后点击Connect。XHT11温湿度传感器检测到当前环境中的温湿度数值，利用串口监视器上看到实验结果，显示如下图。

![](media/81cfa565ffbf818c0d78655bf00c650d.png)

代码2：

根据上图的接线图接好线，由实验接线图可知，XHT11温湿度传感器模块的信号端S是接到P0处，LCD模块的SDA引脚是接在P20，SCL引脚是接在P19。先用micro USB数据线将电脑和micro：bit主板连接好，再启动micro:
bit在线编程工具进行编写代码：

完整的代码程序：

![](media/a40d7ba9a7cfdda7b8dde713c8376792.png)

实验结果：

按照接线图接好线，上传程序，上电后。LCD显示屏显示XHT11温湿度传感器检测到当前环境中的温湿度数值。

（注意：扩展板使用DC 7~9V的电源供电，V1、V2跳帽插在5V的位置![](media/f0e5a4703511356b8735be8155d427ba.png)，实验才能正常工作）

![](media/df25970e47325e9c1eb48ea2b130c236.png)

第28课 micro：bit体感实验

实验说明： 

micro：bit主板中集成了3 轴磁力计（电子罗盘），3 轴加速度计，可以测量microbit的3轴转动角度，也可以检测加速度的大小，也可以检测micro：bit常见的状态，摇晃倾斜自由落体等等。

3轴加速度计是I2C接口与外部通信的，10位ADC精度，可设置量程为±2g，±4g，±8g，数据最大更新速率为800Hz。当micro:bit主板处于静止或匀速运动状态时，加速计仅检测到重力加速度；将micro:bit轻微甩动，加速计检测到甩动的加速度远小于重力加速度，可忽略不计，因此，在使用micro:bit过程中，主要是检测当姿态变化时，重力加速度在x、y、z轴上的变化。

3轴磁力计也是I2C接口与外部通信的，量程为±1000µT，最大数据更新速率为80Hz，地磁传感器除了检测地磁场强度外,还能当作电子罗盘确定方向，同时也是航姿参考系统(AHRS)的重要组成部分。与三轴加速速计结合使用可在任意姿态下计算方位。

实验器材：

|![](media/ca29d1bc5c3eee0b3d971b39220c4d6d.png)|![](media/fa5b6b8e82566ea6828c90fc7dffd1bd.jpg)|![](media/b1c474df0a1f69e72f76bb7e7492e380.png)|![](media/04260641d0d7008c9bcd37f35112b546.jpg)|
|-|-|-|-|
|micro：bit主板×1|keyes micro bit 传感器V2扩展板|RGB×1|micro USB数据线×1|
|![](media/d45516e7148c96da4a618a4d5e6c283c.png)|![](media/b2f58386573c89f41a6f8fcab30de90e.png)|![](media/8386518faa484e3b1c57285c59764711.png)||
|220Ω 电阻×3|面包板×1|公对母杜邦若干||

实验原理图：

![](media/eea54167871975ec4bb7a23f3b43e5ea.png)

实验接线图：

![](media/e03adf12b960a5e924c0b9776657fb6a.png)

实验一

根据上图的接线图接好线，由实验接线图可知，RGB的RED引脚接在P0、GREEN引脚接在P1、BLUE引脚接在P2，先用micro USB数据线将电脑和micro：bit主板连接好，再启动micro:
bit在线编程工具进行编写代码：

(1)实验程序

![](media/d60d4529d0ab180f5e441e015713eb0d.png)

(2)程序说明

![](media/94e7e98fd24f1362dbcb1d0134c1acb7.png)
![](media/4ae437d738d2c1232a50c2ec93839624.png)
![](media/d877238db846f252a3e69824cb16e212.png)
①“当开机时”指令方块仅运行一次以启动程序。 
②关闭LED点阵屏。 
③microbit主板的徽标朝上。 
④将P0的模拟值设为1023。 
⑤将P1的模拟值设为0 
⑥将P2的模拟值设为0 
⑦microbit主板的徽标朝下。 
⑧将P0的模拟值设为0。 
⑨将P1的模拟值设为1023 
⑩将P2的模拟值设为0 
⑪microbit主板屏幕朝上。 
⑫将P0的模拟值设为0 
⑬将P1的模拟值设为0 
⑭将P2的模拟值设为1023 
⑮microbit主板屏幕朝下。 
⑯将P0的模拟值设为1023 
⑰将P1的模拟值设为1023 
⑱将P2的模拟值设为0 
⑲microbit主板向左倾斜。 
⑳将P0的模拟值设为1023 
㉑将P1的模拟值设为0 
㉒将P2的模拟值设为1023 
㉓microbit主板向右倾斜。 
㉔将P0的模拟值设为0 
㉕将P1的模拟值设为1023 
㉖将P2的模拟值设为1023 
㉗振动microbit主板。 
㉘将P0的模拟值设为1023 
㉙将P1的模拟值设为1023 
㉚将P2的模拟值设为1023

实验一结果

按照接线图接好线，上传程序，上电后。micro：bit主板的徽标朝上时，RGB亮红色灯；徽标朝下时，RGB亮绿色灯；屏幕朝上时，RGB亮蓝色灯；屏幕朝下时，RGB亮黄色灯；向左倾斜，RGB亮青色灯；向右倾斜，RGB亮紫色灯；振动时，RGB亮白色灯。

![](media/4d0bae16df05aa740c9f44a55fda0135.png)

实验二

功能：主要体现3 轴加速度计功能

(1)实验程序

![](media/75880cf1b0526c23962bb1bd9c4149a7.png)

(2)实验现象

按照接线图接好线，上传程序，上电后，打开CoolTerm，点击Options，选择SerialPort，设置COM口和波特率，波特率设置为115200，点击OK后，最后点击Connect。随着偏移micro：bit的角度，X、Y、Z的值都发生了实时变化，显示结果如下图。

![](media/82dcbe085dcfa460dd13c2b7c65e600e.png)

#### 第29课 摇杆控制

实验说明

![](media/2df80dd99357835e165801eef1b82327.png)当我们在做DIY自己物品时，经常需要用到摇杆模块，如游戏手柄。那摇杆模块模块是怎么样工作的呢？

摇杆模块主要是采用PS2
手柄摇杆元件，实际上摇杆模块有3个信号端接口，模拟3维空间，其中信号端X、Y模拟空间的X轴和Y轴，控制时，我们需要将模块的X、Y信号端端口连接单片机模拟口，通过控制2个模拟输入值，控制物体在空间X、Y轴的坐标。Z信号端B模拟空间Z轴，它一般接数字口，做按键使用。

V接单片机电源输出端（3.3-5V），G接单片机GND，原始状态下读出电压为2.5V左右，对于X轴方向，当随箭头方向按下，读出电压值随着增加，最大到5V，随箭头相反方向按下，读出电压值减少，最小为0V；对于Y轴方向，当沿着模块上的箭头方向按下，读出电压值减少，最小为0V，随箭头相反方向按下，读出电压值随着增加，最大到5V；对于Z轴方向，信号端B接数字口，原始状态下输出0，按下输出1。我们可以读取两个模拟值和一个数字口的高低电平情况，判断模块上摇杆的工作状态。

在这实验中，我们将摇杆模块的X、Y信号端分别接到micro：bit主板的P0、P1，B信号端接到micro：bit主板的P2。我们将所测的数值在串口监视器上显示。

实验器材：

|![](media/ca29d1bc5c3eee0b3d971b39220c4d6d.png)|![](media/fa5b6b8e82566ea6828c90fc7dffd1bd.jpg)|![](media/04260641d0d7008c9bcd37f35112b546.jpg)|![](media/da7600a96e043124ddb167f7c8e19d6c.png)|![](media/28fc9a283b46a2d1087d154185a67e3e.png)|
|-|-|-|-|-|
|micro：bit主板×1|keyes micro bit 传感器V2扩展板|micro USB数据线×1|Keye摇杆模块|5P 转杜邦母单|

实验接线图

![](media/27fbd47f96c79a6103ebb71fa09020ea.png)

实验程序：

![](media/bd2a7bfcf8404aaac3973ec47d6a6a70.png)

程序说明

![](media/19c8df671b6575a4597b9a21e22b63f1.png)

①“当开机时”指令方块仅运行一次以启动程序。 
②关闭LED点阵屏。 
③在“无限循环”指令方块之内，程序循环运行 
④向串口写入数值X=P0读取的模拟信号 
⑤向串口写入数值Y=P1读取的模拟信号 
⑥向串口写入数值B=P2读取的模拟信号 
⑦延时时间100毫秒

实验现象

按照接线图接好线，上传程序，上电后。打开CoolTerm，点击Options，选择SerialPort，设置COM口和波特率，波特率设置为115200，点击OK后，最后点击Connect。控制摇杆模块，我们就可以在串口监视器上看到显示结果，显示如下图。

![](media/73dcd20c5605a6ed6cbecb5fb1a0d107.png)

#### 第30课 模拟小车运动

实验说明

![](media/98630c0ff3e80501950ab732b4b0b425.png)前一实验我们已经学过了摇杆模块的控制原理，摇杆模块通过摇杆可以很多传感器/模块来设计很多好玩的DIY，本实验我们来学习摇杆模块的应用，我们将摇杆模块的X、Y信号端分别接到micro：bit主板的P0、P1，B信号端接到micro：bit主板的P2，利用摇杆模块控制步进电机和RGB使步进电机的正反转来模拟小车运动。

实验器材：

|![](media/928c31e70bc73db0053059ada2386265.png)|![](media/fa5b6b8e82566ea6828c90fc7dffd1bd.jpg)|![](media/abd1802067bd6ce02d3924554478d4f4.png)|![](media/179a0e03fda535e10312b499125e3fc3.png)|![](media/d45516e7148c96da4a618a4d5e6c283c.png)|![](media/da7600a96e043124ddb167f7c8e19d6c.png)|![](media/28fc9a283b46a2d1087d154185a67e3e.png)|
|-|-|-|-|-|-|-|
|micro：bit主板×1|keyes micro bit 传感器V2扩展板|Keye ULN200步进电机驱动板×1|Keyes 5线步进电机×1|220Ω 电阻×3|Keye摇杆模块|5P 转杜邦母单|
|![](media/8386518faa484e3b1c57285c59764711.png)|![](media/dd52cabc214347c3925e7878e2970768.png)|![](media/f75236ce2e4cc6856fe583d13c65ce72.png)|![](media/a13ed531bb9d730dc840897d36abd72c.png)|![](media/23fa60413d7e58d96ce5bd6891b7435c.png)|![](media/37fca6a24d17aa4e6b71a0758052e5bb.jpg)|![](media/fbd34cc5a738fe444806a14901d3b2fb.png)|
|公对母杜邦若干|面包板连接线若干|18650电池盒×1|18650电池×2|RGB×1|micro USB数据线×1|面包板×1|

实验接线图

![](media/b99ef31266944c9e58dcaa1bd7d43185.png)

![](media/86ed56973338324242421675fc05dd5f.png)

摇杆模块的X信号端是接在P0处，Y信号端是接在P1处，B信号端是接在P2处；步进电机驱动模块的IN1对应的是接到P13处，IN2对应的是接到P14处，IN3对应的是接到P15处，IN4对应的是接到P16处；RGB的RED引脚接在P6处、GREEN引脚接在P7处、BLUE引脚接在P9处

实验一

\(1\) 添加步进电机驱动模块的库文件，添加方法参照上面实验三十四。

(2)实验程序

![](media/8f28c1db94a44e81ff05b74794ff08ac.png)

(3)程序说明

![](media/ea34d2b83c920376af0cc92fc0e4276e.png)
![](media/18179dbe8b4a32184cfe74f726a42b8d.png)

①“当开机时”指令方块仅运行一次以启动程序。 
②关闭LED点阵屏。 
③步进电机初始化 
④设置步进电机速度为SPEED3 
⑤在“无限循环”指令方块之内，程序循环运行 
⑥当P0读取的模拟信号>1000成立时，执行then下的程序 
⑦将RGB亮红灯。 
⑧步进电机逆时针转1圈 
⑨当P0读取的模拟信号<500成立时，执行then下的程序 
⑩RGB亮绿 
⑪步进电机顺时针转1圈 
⑫当P2为高电平（1）时，执行then下的程序 
⑬将P9设置为低电平（1），RGB亮蓝灯。

(4)实验结果：

按照接线图接好线，上传程序，上电后，当摇杆往右移时，RGB亮红灯，步进电动机逆时针转1圈；当摇杆往左移时，RGB亮绿灯，步进电动机顺时针转1圈；当按下摇杆时，RGB亮蓝灯。

（注意：V1跳帽接到3.3V,V2跳帽插在5V的位置![](media/d98ab8092834445c6f7ec93b74833c2b.png)，实验才能正常工作）

![](media/559395d6d8648f4eb28ad8fe9f89a249.png)

拓展实验

使摇杆往后移时，RGB亮红灯，步进电动机逆时针转180°；摇杆往前移时，RGB亮绿灯，步进电动机顺时针转180°；当按下摇杆时，RGB亮白灯。

![](media/410f7745b6ea0dd80e25dea23c0c00c3.png)

#### 第31课 自制超声波测距仪

实验说明

![](media/639d7cbabf38da207b55771d8f178a87.png)自然界有一种叫蝙蝠的动物，蝙蝠在夜间飞行不是靠眼睛看的，而是靠耳朵和发音器官飞行的。蝙蝠在飞行时，会发出一种尖叫声，这是一种超声波信号，是人类无法听到的，因为它的音频很高。这些超声波的信号若在飞行路线上碰到其他物体，就会立刻反射回来，在接收到返回的信息之后，蝙蝠于振翅之间就完成了听、看、计算与绕开障碍物的全部过程。

超声波测距的原理跟上面的原理是一样的，超声波测距模块一触发信号后发射超声波，当超声波投射到物体而反射回来时，模块输出一回响信号，以触发信号和回响信号间的时间差，来判定物体的距离。

在这里，我们将 HC-SR04 超声波传感器先接到keyes micro:bit扩展板上，用于测试超声波传感器和前方障碍物的距离，并在CoolTerm串口监视器显示出来。然后再接LCD显示屏模块，使超声波传感器测试到的前方障碍物的距离在LCD显示屏模块显示出来。

实验器材：

|![](media/fd9651163b36389c63b3a2d95a8939cb.png)|![](media/da4b87d65edc996e523074bc21eea4d4.jpg)|![](media/c6704a2929e20844dbd9bba89c73b39b.jpg)|![](media/ac4d4fe3bd2fa4466577ddeb8ee78d9b.png)|
|-|-|-|-|
|micro：bit主板1|扩展板×1|1602 LCD显示屏模块×1|4P 转杜邦线母×|
|![](media/85bad858984cb435b0e28f769a3d61fe.jpg)|![](media/652d554d61e941b8a076ca9e18ee781c.png)|![](media/50bf66b979c50873bdbd301db049a41d.png)|![](media/eb9d93ce3caf8797c6fc6cf7248afebc.png)|
|micro USB数据线×1|18650电池盒×1|18650电池×2|keyes HC-SR04超声波传感器|

实验接线图：

![](media/e98db7416c369cf6e124f97ed120a1e1.png)

实验一

(1)添加库文件

超声波传感器库添加方法如下：

在下图模块添加库文件，点击“扩展”。

![](media/6a24c78623f72d5bcb0074e2fe22d478.png)

输入sonar并搜索，显示如下图，点击库文件，自动下载安装库文件。

![](media/39ceca33099ca1407c3999171e36c522.png)

超声波传感器的库文件安装成功，然后在编辑代码栏目里看到对应模块。

![](media/5afe72a0788d2031aaa3c9456f792143.png)

(2)实验程序

![](media/d32d362a7c901092e68cca21191581be.png)

(3)程序说明

![](media/d32d362a7c901092e68cca21191581be.png)
①“当开机时”指令方块仅运行一次以启动程序。 
②关闭LED点阵屏。 
③在“无限循环”指令方块之内，程序循环运行 
④将distance设为“ping trig P2 echo P1 unit cm” 
⑤延时时间50毫秒 
⑥串行写入数值distance(cm)=distance

(4)实验现象

按照接线图接好线，先后上传两个程序，上电后，打开CoolTerm，点击Options，选择SerialPort，设置COM口和波特率，波特率设置为115200，点击OK后，最后点击Connect。在串口监视器上显示超声波测到的距离，显示如下图。

![](media/c88ce484a935653373de5cdf72c727ed.png)

（注意：扩展板使用DC 7~9V的电源供电，V1/V2跳帽插在5V的位置![](media/3086225cb1437a27f0e97c8fa45ce7dc.png)，实验才能正常工作）

实验二

添加库文件

先添加HC-SR04
超声波传感器的库文件，添加方法如上实验1；再添加LCD模块的库文件，添加方法参照前面课程22课。

2)代码程序

![](media/edefc3b944343c66b51fec12707143eb.png)

(3)程序说明

![](media/29c0ebde502d523ca3f115941f794a99.png)
①“当开机时”指令方块仅运行一次以启动程序。 
②关闭LED点阵屏。 
③LCD1602初始化 
④在“无限循环”指令方块之内，程序循环运行 
⑤读取超声波检测数值 
⑥LCD1602显示字符“Val: cm” 
⑧LCD1602显示检测距离 
⑨延时时间200毫秒

(4)实验现象

按照接线图接好线，上传程序，上电后，我们可以看到OLED显示屏显示超声波模块检测到离障碍物的距离。

（注意：扩展板使用DC 7~9V的电源供电，V1/V2跳帽插在5V的位置![](media/3086225cb1437a27f0e97c8fa45ce7dc.png)，实验才能正常工作）

![](media/63112547911b46dc69a6a541227b7b91.png)

#### 第32课 多功能

实验说明

在前面我们做了很多实验，每做一个实验，我们都需要重新上传一次代码。那我们可以把多个实验组合在一起吗？可以的，在这一实验中，我们将多个传感器组合实现多功能。

实验器材

|![](media/928c31e70bc73db0053059ada2386265.png)|![](media/fa5b6b8e82566ea6828c90fc7dffd1bd.jpg)|![](media/02702806aa65e1459bcaa8c11b0278c1.jpg)|![](media/e9d31cb759077e42a3eb947de43b2127.jpg)|![](media/16e9533847fbadca96672c1321c02347.png)|![](media/3ae8675c1f7ce024b0e3b202c3265632.png)|
|-|-|-|-|-|-|
|micro：bit主板×1|keyes micro bit 传感器V2扩展板|micro USB数据线×1|1602 LCD显示屏模块×1|keyes超声波传感器|Keyes 四位数码管|
|![](media/272158e4e5aa329b0a7b05f8b3b174d1.png)|![](media/be77601586944b8abe728ee67dcaf971.png)|![](media/0d44138f34688303fad2deb19aadf519.png)|![](media/023ae798aede86be73fe4fa6e02d59ff.png)|![](media/41329132f255e8ba42e6b4c242edc63b.png)|![](media/5220f8e97e7146aa597f1daa1ef0013f.png)|
|keyes人体红外传感器模块×1|水滴传感器×1|舵机×1|声音传感器|S8050三极管×1|3P 转杜邦线母×3|
|![](media/26cf70ea44c44ad9ef17ec36b925075a.png)|![](media/8231bc2e7a99cc541dffa05402d3038d.png)|![](media/1f75f6b443ad7d7f8050adc2ef3b2cb7.png)|![](media/d45516e7148c96da4a618a4d5e6c283c.png)|![](media/626a5da07f0aa2aee972c73a879896da.jpg)|![](media/d0a99ac2ac386a39d84285f486ba6205.jpg)|
|有源蜂鸣器×1|10KΩ电阻×1|2.4KΩ电阻×1|220Ω 电阻×1|红色LED×1|光敏电阻×1|
|![](media/be67ca8c909c1777a7f3c6d4896cdc8f.png)|![](media/e09c3f9785919d14b1286fc7e6e9b48e.png)|![](media/ad4238b10e5ce740807adc9a3a0c6e3c.png)|![](media/93564082f9f67498852f0e43d081c001.png)|![](media/a13ed531bb9d730dc840897d36abd72c.png)|![](media/d681795d1db591c78ef9c35d914629e3.png)|
|公对母杜邦线若干|面包板连接线若干|面包板×1|18650电池盒×1|18650电池×2|3P 转杜邦线母|

实验接线图

![](media/09ef56519293bf5c34142a02b1a808ad.png)

V1、V2跳帽插在5V的位置

实验程序

![](media/3a2f6616fb8362bef4c4f5d41a94d42a.png)![](media/4bda1636eaa2b4ab1f0ff08aa596ac77.png)

实验结果

按照接线图接好线，上传程序，上电后，LCD1602显示屏第一行显示超声波检测的距离和当前环境的光照数值，第二行显示人体红外传感器检测有没有人和水滴水蒸气数值。

四位数码管显示声音传感器检测到当前环境声音强度的数值大小。

（3）当光照模拟值大于800时，点亮LED灯，低于800时自动熄灭LED灯。

（4）当人体红外传感器检测到附近有人移动时，LCD显示屏模块显示“somebody”，舵机从0°转到90°；当人体红外传感器未检测到附近有人移动时，LCD显示屏模块显示“nobody”，舵机从90°转到0°。

(5)当水滴传感器的模拟值大于350时蜂鸣器发声，小于350时蜂鸣器不发声。

（注意：扩展板使用DC 7~9V的电源供电，V1，V2跳帽插在5V的位置，实验才能正常工作）

![](media/d40ceb99e2c74ac42c0bce29c7ac5fee.png)
